正文

1. 常量和符号常量
符号常量:用标示符代表一个常量。在C语言中,可以用一个标识符来表示一个常量,称之为符号常量。
符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量
习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
2. 补码
数值是以补码表示的:
- 正数的补码和原码相同;
- 负数的补码:将该数的绝对值的二进制形式按位取反再加1。
** 结论:第一位是符号位。首位为1, 为负数, 否则正数 **
举例:
- 十进制转二进制
例如: 求-10的补码
10的原码: 00001010
取反: 11110101
再加1, 得-10的补码: 11110110 - 二进制转十进制 (减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语言中,实数只采用十进制。它有二种形式:十进制小数形式,指数形式。
- 十进制数形式:由数码0~ 9和小数点组成。
例如:
0.0、25.0、5.789、0.13、5.0、300.、-267.8230
等均为合法的实数。注意,必须有小数点。
指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。
其一般形式为:
a E n(a为十进制数,n为十进制整数)
如:
2.1E5 (等于2.1105)
3.7E-2 (等于3.710-2)
0.5E7 (等于0.5107)
-2.8E-2 (等于-2.810-2)
标准C允许浮点数使用后缀。后缀为“f”或“F”即表示该数为浮点数。如356f和356.是等价的。
C语言中关于float、double、long double精度及数值范围理解
6.转义字符

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);
网友评论