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