【发布时间】:2019-11-01 03:45:23
【问题描述】:
有符号短(有符号 Int16)乘法解释?
short ss = -32768; // 0x8000 SHRT_MIN
ss *= (short) -1;
printf ("%d", (int)ss); // Prints -32768
值 -32768 乘以 -1 的 unsigned short 自身的机制是什么?我的猜测是 (int)32768 ---> 溢出并返回到 -32768 但这里没有要求提升到整数或任何更大的数据类型。
查找定义此行为的 C 规范部分。
【问题讨论】:
-
挖掘为什么它是未定义的......“整数溢出的 C/C++ 方法是提供在您正在使用的机器上最快的行为,所以在某些机器上(这里假设 16-位有符号整数):“stackoverflow.com/questions/13993047/…