我想将某些值的符号更改版本传递给函数。我知道如何检查标志是否发生更改是否溢出,但是我不知道这种情况。

int apple( int );

int a = 0;

apple( -a );

C / C++标准涵盖了定义的行为吗?我正在传递-0,我猜想当a == 0时。使用这样的东西代替:a ? -a : a吗?谢谢

最佳答案

对于-a的情况,a == 0定义明确。该标准要求的是它仍然为零。

它不能保证值中的“位”保持不变(它们是2的补码,而不是1的补码,在这种情况下,值是“负零”,无论该位的位模式是什么)。但是对于if (!x)if (x == 0)而言,该值应为true,即使x的值为“负零”,也要由编译器和/或处理器制造商来确保其有效。

关于c++ - C/C++取值为0的整数类型变量的取反,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18837859/

10-13 22:06