C语言的变量:
- 在使用前定义
- 一定要确定类型
类型包括:
- 整数char、short、int、long、long long
- 浮点数float、double、long double
- 逻辑bool
- 指针
- 自定义类型
类型不同点:
- 类型名称:int、long、double
- 输入输出时的格式化: %d、%ld、%lf
- 所表达的数的范围: char < short < int < float <double
- 内存中所占据的大小:1个字节到16个字节
- 内存中的表达形式:二进制数(补码)、编码
sizeof:
- 是一个运算符,给出某个类型在内存中所占据的字节数,如sizeof(int)
- 是静态运算符,它的结果(即某一类型的大小)在编译时刻就决定了
- 不要在sizeof的括号里做运算,这些运算不会做的
补码:
- 对于a来说,0-a就是a的补码
- 原码和补码可以加出一个零
整数加法:
- char:1字节:-128~ 127.
- short:2字节: -32768~32767
- int:取决于编译器(CPU) ,通常的意义是“1个字”.
- long:4字节
- .long long: 8字节
整数是以纯二进制方式进行计算的,如char : 127+1=-128
unsigned:
- 能扩大数能表达的范围
- 如果一个字面量常数想要表达自己是unsigned,可以在后面加u或U
- 255U
- 用l或L表示long(long)
- unsigned的初衷并非扩展数能表达的范围,而是为了做纯二进制运算,主要是为了移位
整数的输入输出
实际在使用时只有两种形式:int或long long
- %d: char,short,int
- %u: unsigned
- %ld : long long
- %lu: unsigned long long
八进制和十六进制
- 一个以0开始的数字字面量是8进制
- 一个以0x开始的数字字面量是16进制
- %o用于8进制,%x用于16进制
- 8进制和16进制只是如何把数字表达为字符串,与内部如何表达数字无关
为了准确表达内存,做底层程序的需要,所以整数的种类有很多。
如何选择整数类型:
- 没有特殊需要,就用int
- unsigned与否只是输出的不同,内部计算是一样的