gpt4 book ai didi

c - C程序中的整数提升

转载 作者:太空狗 更新时间:2023-10-29 15:03:37 26 4
gpt4 key购买 nike

我编写了一个简单的 C 程序,想知道其中是否进行了整数提升。

Please explain how integer promotion happens and how to avoid it?

/* start of main */

unsigned short int res;
unsigned short int bsp;
signed short int analog;

bsp = 2215;
analog = 2213;
if((signed short int)(bsp - analog) > 0){
res = bsp - analog;
printf("%d", res);
}
else{
res = analog - bsp;
printf("%d", res);
}

最佳答案

我将把这个答案限制为 32 位的 int 和 16 位的 short

那么bsp - analog是一个int类型的表达式。

如果 bsp - analog 不能用 short 表示,则将其转换为 short 的行为是未定义的。因此,请谨慎编写类似 (signed short int)(bsp - analog) 的代码。

在您的 printf 调用中,将 res 隐式提升为 int

最后,避免不必要的促销的最佳方法是始终使用相同的类型。考虑在您的案例中使用 intlong

关于c - C程序中的整数提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com