[经验分享] C语言学习 关于short和int

[复制链接]
688|0
Zuocidian 发表于 2025-8-14 11:21 | 显示全部楼层 |阅读模式
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()函数时,切记检查每个待打印值都有对应的转换说明,还要检查转换说明的类型是否与待打印值的类型相匹配
————————————————
版权声明:本文为CSDN博主「~光~~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_53131867/article/details/140328548

您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

275

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部