C:表达式求值中的隐式转换和整数溢出

lil*_*llq 2 c

我们来看看代码

int a, b, c;
...
if ((a + b) > C)
Run Code Online (Sandbox Code Playgroud)

如果我们添加a和b的值并且总和超过int的最大值,那么比较的完整性是否会受到影响?我当时认为可能存在隐式向上转换或溢出位检查,这将被考虑到此表达式的评估中.

haz*_*zen 7

C不会做这样的事情.它将无声地溢出并导致可能不正确的比较.您可以自己升级,但不会自动完成.