int类型
- 一般情况使用int类型即可,但是为满足特定任务和机器的要求,还可以选择其他类型
- int是有符号整型,int类型的值必须是整数,可以是正整数、负整数或0,一般而言,存储一个int要占一个机器字长。不同字长的计算机存储数值的范围不同,ISO C规定int的取值范围最小为-32768\~32767
- 一般而言,系统用一个特殊位来表示有符号整数的正负号
初始化变量
- 初始化(initialize)变量就是为变量赋一个初始值。在C语言中,初始化可以直接在声明中完成,即创建内存空间并为其赋值。
int类型常量
- int类型常量就是理解在C语言中固定不可更改的整数值表示。C语言把大多数整型常量视为int类型,但是非常大的数除外
打印int值
- %d被称为转换说明,它指定了 printf() 应使用什么格式来显示一个值。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配
- 作为程序员,要确保转换说明的数量与待打印值的数量相同,编译器不会捕获这类型的错误。由于没有给%d提供任何值,所以打印出来的是内存中的任意值
八进制和十六进制
- 使用不同进制数是为了方便,不会影响数据被存储的方式,因为计算机内部都以二进制编码
- 八进制数系统使用数字0到7
- 十六进制0-9和A-F来表示数字,对应十进制0-15
显示八进制和十六进制
- 八进制%o
- 十六进制%x
- 要显示各进制的前缀0、0x和0X,必须分别使用%#o 、%#x、%#X
其他整数类型
C语言提供三个附属关键字修饰基本整数类型:short、long 和 unsigned
- short int 类型:占用的存储空间比int类型少,16位,用于较小数值,short是有符号类型
- long int 或 long :占用比int类型多,占32位或64位,long是有符号类型
- unsigned int 或 unsigned :只用于非负值场合,用于表示正负号的位现在用于表示另一个二进制位,所以无符号整型可以表示更大的数
- 在C90标准中,添加了unsigned long int 或 unsigned long 和unsigned short int 或 unsigned short 类型。C99标准又添加了unsigned long long int 或 unsigned long long
- 在任何有符号类型前面添加关键字signed,可强调使用有符号类型的意图。
- C语言规定了short占用的存储空间不能多于int,long占用的存储空间不能少于int
- 个人计算机最常见的设置是,long long 占 64位,long 占 32 位,short 占 16 位,int 占 16 位或32位(依计算机自然字长而定)。原则上,这4种类型代表4种不同的大小,但是在实际使用中,有些类型之间通常有重叠。
- 首先,考虑unsigned类型,这种类型常用于计数,因为计数不用复数
- 整数溢出:当整数类型达到它能表示的最大值时,会重新从起始点开始。溢出行为是未定义的行为,C标准并未定义有符号类型的溢出规则。
打印short、long、long long 和 unsigned 类型
- 打印unsigned使用%u转换说明,打印long使用%ld转换说明。如果系统中int和long大小相同,使用%d就行,但是这样的程序被移植到其他int和long类型大小不同的的系统中会无法正常工作。%lx表示以16进制打印long类型整数,%lo表示以8进制打印long类型整数。虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写
- 对于short类型,可以使用h前缀。%hd表示以十进制显示short类型的整数。
- h 和 l 的前缀都可以和 u 一起使用,用于表示无符号类型。例如%lu打印unsigned long 类型。
- 对于支持long long 类型的系统,%lld和%llu分表表示有符号和无符号类型
- int类型被认为是计算机处理整数类型时最高效的类型
- 在使用printf()函数时,切记检查每个打印值都有对应的转换说明,还要检查转换说明的类型是否与待打印值的类型相匹配
最后修改:2024 年 02 月 27 日
© 允许规范转载