美文网首页
1.C语言-数据类型,运算符和表达式

1.C语言-数据类型,运算符和表达式

作者: 后备干部 | 来源:发表于2016-12-17 19:47 被阅读0次

    正文

    QQ20161217-0.png

    1. 常量和符号常量

    符号常量:用标示符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
    符号常量在使用之前必须先定义,其一般形式为:
    #define 标识符 常量
    习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。

    2. 补码

    数值是以补码表示的:

    • 正数的补码和原码相同;
    • 负数的补码:将该数的绝对值的二进制形式按位取反再加1。

    ** 结论:第一位是符号位。首位为1, 为负数, 否则正数 **

    举例:

    1. 十进制转二进制
      例如: 求-10的补码
      10的原码: 00001010
      取反: 11110101
      再加1, 得-10的补码: 11110110
    2. 二进制转十进制 (减1, 再取反)
      例如: 11110110
      减1: 11110101
      取反: 00001010
      加符号: -10

    3. 占多少字节

    • char: 1
    • short:2
    • int、unsigned int, float:4
    • long、double: 8

    注意:这里占多少个字节跟系统和编译器规定有关!可以在编译器上 自己试试查看 sizeof()

    4.溢出

     short int a, b; // -32768 - (32768-1)
     a = 32767; // 0111 1111 1111 1111
     b = a + 1; // b = -32768 溢出了 1000 0000 0000 0000
    
     /*
            b:
            a + 1
            0111 1111 1111 1111
            0000 0000 0000 0001
        =   1000 0000 0000 0000
         
            补码计算: 二进制转十进制 (减1, 再取反)
            得到 -32768
         */
    

    5. 实型数据

    1 实型常量的表示方法
    实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中,实数只采用十进制。它有二种形式:十进制小数形式,指数形式。

    1. 十进制数形式:由数码0~ 9和小数点组成。
      例如:
      0.0、25.0、5.789、0.13、5.0、300.、-267.8230
      等均为合法的实数。注意,必须有小数点。
    1.    指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
      

    其一般形式为:
    a E n(a为十进制数,n为十进制整数)
    如:
    2.1E5 (等于2.1105)
    3.7E-2 (等于3.7
    10-2)
    0.5E7 (等于0.5107)
    -2.8E-2 (等于-2.8
    10-2)
    标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。

    C语言中关于float、double、long double精度及数值范围理解

    6.转义字符

    QQ20161217-0.png

    7. 字符型数据

    char 占1个字节, 256, 因为 ASCII 总共刚好有256, 0-127

    8. 字符串类型

    字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"\0" (ASCII码为0)。这是字符串结束的标志。

    9. 逗号运算符和逗号表达式

    其一般形式为:
    表达式1,表达式2
    其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。

     int a=2,b=4,c=6,x,y;
     y=(x=a+b),(b+c);
        /*
            逗号表达式的运算级最低,比赋值运算符级别还低。
             所以 y=(x=a+b),(b+c);
             先算x=a+b=6,再y=x=6;而后面的b+c不影响x和y的值。
             所以最终x,y的值都是6.
             只不过 y=(x=a+b),(b+c);这整个式子的值是b+c=10而已。
             如果是y=((x=a+b),(b+c)); 那么才结果是x=6,y=b+c=10
         */
      //y=6,x=6
      printf("y=%d,x=%d\n",y,x);
    

    相关文章

      网友评论

          本文标题:1.C语言-数据类型,运算符和表达式

          本文链接:https://www.haomeiwen.com/subject/ksxamttx.html