16进制整数用0x开头
float只接受7位有效数字
\ddd 表示1到3位 8进制数所代表的字符
\xhh 表示1到2位16进制数所代表的字符
\n 换行
\t 横向跳格
\v 竖向跳格
\b 推格
\r 回车
\f 走纸换页
\\ 表示反斜杠
\' 单引号
一个字符数据即可以以字符数据输出,也可以以整数形式输出。
{
char c1,c2;
c1=97;
c2=98;
printf("%c,%c",c1,c2);
}
有些系统中将char的最高位看做是符号位,所以在这样的系统中ASCII中的0-127在作为整数处理的时候看做是正数,而其他128-255间的字符被视为负数。
有些系统允许使用unsigned char型变量
C语言中规定,每个字符串的结尾处要加一个“字符串结束标志”--'\0'.其ASCII码为0。表示空操作符,不会引起任何控制动作,也不是一个可显示的字符。但是对于一个字符串"China"他实际有6个字符,而不是5个。
初始化
int a,b,c=5; 实际上只初始化了一个c
int a=b=c=5; 是错误的,应该写成 int a=5,b=5,c=5;
因为初始化不是在编译时完成的,而是在运行时完成的。
运算
整型,实型和字符型间可以混合运算
%要求其两侧的均为整型量
(int)(x+y)和(int)x+y是有区别的。
++和--的结合方向是"自右至左"的。对于-i++ 如果将其看成是(-i)++ 是错误的因为表达式是不能++的,按照自右至左的方式将其看成是-(i++)才对。
假设i=3;对于 (i++)+(i++)+(i++) 的结果是9,最后i=6
对于 (++i)+(++i)+(++i) 的结果是18,最后i=6
x *= y+8 等价于 x = x*(y+8)
赋值运算
赋值运算是自右至左的,所以可以写成是a=b=c=5,他相当于a=(b=(c=5));
逗号运算符
x=(a=3*5,a*4) 最后的x=60,a=15
x=a=3*5,a*40 最后的x=15, a=15
x=((a=3*5,a*4),a+5) 最后的x=20,a=15