C语言学习 关于short和int

时间:2024-07-10 18:19:14

???? 关于今天的这一part 简单说说关于C中的short 和 int 主要是复盘C语言时候的一个小小的回顾把~(内容来自C Primer Plus 第六版)
????主要是讨论一下两个东西
1️⃣ 在给函数传递参数时,C编译器把short类型的值自动转换成int类型的值 2️⃣在表示short类型时,使用的h有什么用

???? ok,先来看看这个题
????运行之后的结果是什么

#include <stdio.h>
int main(void)
{
	short end = 200;
	printf("end = %hd and %d\n", end, end);
	return 0
}

没错 ,都是200.

????这边有两个比较需要注意的点。
对于short类型的变量end,在printf()中无论指定 以short类型(%hd)还是int类型(%d) 打印,打印出来的值都相同。

这是因为在给函数传递参数时,C编译器把short类型的值自动转换成int类型的值。(后面的隐式转换也是会用到这些点的)你可能会提出疑问:为什么要进行转换?h修饰符有什么用?

1️⃣第1个问题的答案是,
int类型被认为是计算机处理整数类型时最高效的类型。 因此,在short和int类型的大小不同的计算机中,用int类型的参数传递速度更快。

2️⃣第2个问题的答案是,
使用h修饰符可以显示较大整数被截断成 short 类型值的情况

举个例子 ????

把 65537 以二进制格式写成一个 32 位数是
00000000000000010000000000000001。

使用 %hd,printf()只会查看后 16位,所以显示的值是 1 。与此类似,如果使用了%ld,printf()只显示了储存在后32位的值

最后要注意的是,在使用 printf()函数时,切记检查每个待打印值都有对应的转换说明,还要检查转换说明的类型是否与待打印值的类型相匹配

????ok 就这么多,完结~ 点个赞呗~