美文网首页
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