gpt4 book ai didi

c - 常用算术转换 : unexpected output

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:29 25 4
gpt4 key购买 nike

signed short Temp;
Temp = 0xF2C9;
Temp2 = 0x100;

unsigned char a;
a = (unsigned char)(Temp/((unsigned short)Temp2));

预期的输出是什么?
根据我的理解,由于“通常的算术转换”,首先 Temp 应该被转换成 unsigned short 并且 a 的结果应该是 0xF2 ,但我收到响应 0xF3,这意味着操作是使用 Temp 的有符号值执行的。请解释此行为。

在这种情况下字节顺序是否也相关?

最佳答案

不,首先,算术运算符的所有参数都被提升,即窄类型,例如您的 short 被转换为 int。 (至少在所有常见架构上)。

假设 short 在您的系统上是 16 位宽,Temp 的初始化是实现定义的,因为 0xF2C9 的值不适合到类型。很可能它是一个负值。然后,为了计算,负 signed short 值被提升为 int。除法的结果是一个负值,然后将其转换为 unsigned char

关于c - 常用算术转换 : unexpected output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27250531/

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