<分区>
假设 int
是 16 位类型,以防止从 short
隐式转换。
long test_1(short x, short y)
{
return x + y;
}
- 在此示例中,关于提升数字的 C 规则是什么?
- 如何防止模运算?
<分区>
假设 int
是 16 位类型,以防止从 short
隐式转换。
long test_1(short x, short y)
{
return x + y;
}
最佳答案
规则相对简单。二进制 + 将导致“最大”int 的数据类型。如果您有两个相同类型的操作数,则结果将是相同类型。
表达式
return x+y
分两步进行评估。首先,计算 x+y 的结果。这是一个简短的(如在您的第一个声明中)。然后将其转换为函数的类型。
如果要避免溢出,需要将 plus 的操作数转换为所需的类型:
return ((long)x) + y
为了清楚起见,我在括号中加了括号。
关于c - 如何在 C 中为表达式 long = short + short 强制整数提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40332400/