• c的详细学习(2)数据类型,运算符与表达式


        本节用来介绍c语言中的数据类型和运算符。

        (1)c语言的基本符号:      

        任何一种基本语言都有自己的基本词汇表。c语言的基本词汇表有一下几部分:

        *数字10个;

        *英文字母:大小写各26个;

        *下划线字符“_”;

        *运算符:表达程序的基本操作使用的一些符号;

        *关键字:职位表达程序功能使用的一些英文单词或单词缩写;

        (2)标识符:

        标识符是用来为符号常量,变量,函数,数组,类型,文件命名的有效字符序列。命名规则如下:

        *只能有数字字母和下划线组成;

        *第一个字符必须使用字母或者下划线;

        *不能使用关键字;

        *区分大小写;

        *ANSI C没有规定标识符的长度,各个操作系统允许的标识符的长度不一样。Turbo C规定标识符最长为32个字符,但一般建议标识符的长度最好不超过8个;

        用标识符形式标识的有常量,变量,和关键字。

        (3)c语言的数据类型:

          

          

        16进制数以0x或者0X开头,并由数字0~9和字符a~f或者字符A~F组成的数字序列。习惯上,以0x开头时用小写字母,以0X开头时用大写字母。一个整型变量后面加上一个字母L或者小写l,则明确指出该变量是long int型的,这种处理方式往往用于函数调用时参数传递过程中。

        用指数形式表达小数:一般格式是“实数(整数)+e(或者E)+整数”。

        许多c的编译系统将实型常量当做双精度来处理。例如:

        float  x;

        x=1.23454*6832.12;

        系统将把1.23454和6832.12按双精度来存储(占64位)和运算,得到一个双精度的乘积,然后取前7位赋给变量x.这样可以保证结果更加精确。但是降低了运算的速度。可以在数的后面加上f或者F,则数字将按照单精度(占32位)存储和计算。

        双精度Double与单精度Float的比较:

     1 #include<stdio.h>
     2 
     3 int main(){
     4     
     5   float a;
     6   double b;
     7   a=1234.111111;
     8   b=1234.111111;
     9   printf("a=%f
    b=%f
    ",a,b);
    10 }

        

        由此看出,由于float型变量a只能接受7位有效数字,因此最后三位是不准确的,但double型数字是可以全部接受10位有效数字的。

        (4)常用转义字符:

    0    空字符    0)
    (	    水平制表,跳到下一个Tab位置    9)
    (
        回车,将当前位置移到本行的开头    13)
    (
        换行,将当前位置移到下一行的开头    10)
    ('    双撇号    34),(""    单撇号    39)
    1 #include<stdio.h>
    2 
    3 int main(){
    4   printf("c	languagese
    C
    ");
    5   printf("is	usef165x6c
    ");
    6   return 0;
    7 }

        165中165是8进制数,转换为十进制数ASCII码为117,’165‘表示字符'u'。

        无论字符变量还是字符常量,在内存中都只占一个字节,用来存放一个字符。字符在内存中是以ASCII码来进行存储的。字符型数字既可以用整数形式输出也可以用字符格式输出。

        (5)运算符和表达式:

        5.1逗号运算符

     1 #include<stdio.h>
     2 
     3 int main(){
     4   int m=1,n=2;
     5   int a;
     6   a=(m+n,m-n);
     7   printf("a的值为%d,表达式的值为%d
    ",a,a=(m+n,m-n));
     8   a=m+n,m-n;
     9   printf("a的值为%d,表达式的值为%d
    ",a,(a=m+n,m-n));
    10   a=m+n,m-n+a;
    11   printf("a的值为%d,表达式的值为%d
    ",a,(a=m+n,m-n+a));
    12   printf("");
    13   return 0;
    14 }

         5.2强制类型转换

        对变量进行强制类型转换时,只能得到一个中间值,并不改变该变量原有的类型。

     1 #include<stdio.h>
     2 
     3 int main(){
     4   double y=7.56;
     5   int a=2,b;
     6   b=(int)y%a;
     7   printf("b=%d,",b);
     8   printf("y=%f
    ",y);
     9   return 0;
    10 }

         

         强制类型转换运算符的优先级高于取余运算符。

        5.3自增运算和自减运算

        自增运算符和自减运算符是c语言特有的单目运算符,他们只能和一个单独的变量组成表达式。

         x++和++x的相同之处是:单独作为一个表达式语句被使用时,无论执行了哪一种表达式,执行结束后x的值都加1.

        x++和++x的不同之处是:当他们出现在其他表达式中时,也就是说作为其他表达式的一部分时,两个表达式的结果是不一样的。++x的值等于原值+1,x++的值等于x的原值。

        5.4位运算

        c语言是为开发系统软件而设计的,因此它提供了操作二进制数的功能,这些功能通常只有汇编语言才具有。

        

        应用举例:

     1 #include<stdio.h>
     2 
     3 int main(){
     4   unsigned int A=0xb3,B=0x9a;
     5   printf("~A=%x
    ",~A);
     6   printf("A&B=%x
    ",A&B);
     7   printf("A|B=%x
    ",A|B);
     8   printf("A^B=%x
    ",A^B);
     9   A=27;B=28;
    10   printf("A<<1=%u
    ",A<<1);
    11   printf("A>>1=%u
    ",B>>1);
    12   return 0;
    13 }

        运行结果如下:(分别为取反,与,或,异或,右移与左移)

        

  • 相关阅读:
    [HDOJ4417]Super Mario(归并树)
    [POJ2104] K-th Number(归并树,二分)
    2017北理校赛G题 人民的名义(FFT)
    [CF762C] Two Strings(预处理,二分答案)
    [CF798D] Mike and distribution(贪心,鸽笼原理,随机)
    [CF798C] Mike and gcd problem(规律,gcd)
    2017北理校赛H题 青蛙过河(线段树, dp, 离散化)
    [CF798B] Mike and strings(暴力)
    [CF798A] Mike and palindrome(水题,trick)
    [CCPC2017]湘潭邀请赛
  • 原文地址:https://www.cnblogs.com/MenAngel/p/5331869.html
Copyright © 2020-2023  润新知