小编ems*_*msa的帖子

(x<y)==(-x>-y) 是真还是假?

该问题来自 cs:app3e 2.82。我了解到,当x = INT_MIN,-x也是-INT_MIN,但是

#include <stdio.h>
#include <limits.h>

int main() {
    int x = INT_MIN, y = -3;
    printf("%d\n", (x < y) == (-x > -y));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在我的机器上(Linux版本6.2.0-34-generic(buildd@bos03-amd64-059)(x86_64-linux-gnu-gcc-11(Ubuntu 11.4.0-1ubuntu1~22.04)11.4.0,GNU ld(GNU Binutils for Ubuntu) 2.38)),这给出输出 1。为什么会发生这种情况?

我使用gcc -o来编译它。我还使用gcc -O0来编译它。

c gcc system

3
推荐指数
1
解决办法
251
查看次数

标签 统计

c ×1

gcc ×1

system ×1