发生溢出时比较运算符如何工作

Dex*_*ter 5 c c++

我有以下代码:

int main() {
   int64_t val1 = 0x8000000000000000;
   int64_t val2 = 0x1c11223344556677;
   if(val1 > val2) {
      std::cout << "Val1 is greater than val2"<< std::endl;
   }
   else {
      std::cout << "Val2 is greater than val1"<< std::endl;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

获取代码其他部分的打印内容。

我想知道比较运算符如何处理,或者如果其中一个值超过最大值,那么任何算术运算如何工作?

her*_*tao 4

根据 C++11 \xc2\xa75:

\n\n
\n

如果在计算表达式期间,结果未在数学上定义或不在其类型的可表示值的范围内,则行为是 undefined

\n
\n