1. C 是有类型的语言
C 语言的变量,必须在使用前定义,并且确认类型。
早期语言强调类型,面向底层的语言强调类型。
C 语言需要类型,但是对类型的安全检查并不足够。
2. C 语言的类型
3.类型有何不同
4. sizeof
是一个运算符,给出某个类型或变量在内存中所占据的字节数。sizeof ( int ); sizeof( i );
sizeof 是静态运算符,它的结果在编译时刻就已经确定了。
不要在 sizeof 的括号里做运算,这些运算不会做的。
5.整数
整数的内部表达:计算机内部一切都是二进制。
18:00010010 0:00000000
6.如何表示负数(二进制负数——补码)
7.整数的范围
8. unsigned
如果一个字面量常数想要表达自己是 unsigned ,可以在后面加 u 或 U 。
用 l 或 L 表示 long 。
9.整数越界
10.整数的输入输出
只有两种形式:int 或 long long
%d :int %ld : long long
%u : unsigned %lu : unsigned long long
当我们把所有小于 int 的变量传给 printf 的时候,编译器会把这些变量转换为 int 传进去。
11. 8进制和 16进制
一个以 0 开始的数字字面量是 8 进制。一个以 0x 开始的数字字面量是16进制。
%o 用于8进制 %x 用于16进制。编译器会替你转换,计算机内永远为二进制。
8 进制和 16 进制只是如何把数字表达为字符串,与内部如何表达无关。
12.选择整数类型
没有特殊需要,就选择 int 。
13.浮点数
inf 表示超过范围的浮点数,nan 表示不存在的浮点数。
带小数点的字面量是 double 而非 float。float 需要用 f 或 F 后缀表明身份。
用 fabs( f1-f2 ) < 1e-12 判断相等。带小数点的数不准确,需要换为整数。
如果没有特殊需要,只使用 double 。
浮点数输出精度:在%和 f 之间加上 .n 可以指定输出小数点后几位。这样的输出是做四舍五入的。
浮点运算没有精度。
14.字符类型
char 是一种整数,也是一种特殊类型:字符。
用字符串表示的字符字面量:‘a’ ‘i’ ‘l’ '' 也是一个字符
printf 和 scanf 用 %c 来输入输出字符。
字符计算:一个字符加一个数字得到 ASCII 码表中的那个数之后的字符,两个字符的减,得到它们在表中的距离。
15.逃逸字符
用来表达无法印出来的控制字符或特殊字符。它由一个反斜杠 “\” 开头,后面跟上另一个字符,这两个字符结合起来,组成了一个字符。
制表位:一个 \t 使得输出从下一个制表位(作用类似于tab)开始,用 \t 才能使得上下两行对齐。
16.自动类型转换
当运算符的两边出现不一致的类型时,会自动转换成较大的类型。
对于printf ,任何小于 int 的类型会被转换成 int ; float 会被转换成 double ,但 scanf 不会。
不可以以整数形式输入 char ,必须输入一个整数,再交给 char 类型。
17.强制类型转换
要把一个量强制转换成另一个类型(通常是较小的类型)。(类型) 值
注意这时的类型安全性,小的变量不总能表达大的变量。
强制转换的优先级高于四则运算。
网友评论