小编Alp*_*eam的帖子

G ++允许在x64上进行隐式的long-to-int截断

我用g ++ -Wall编译这段代码,得到没有警告/错误:

#include "stdio.h"

int main() {
        long x = 1000000000000;
        int y = x;
        printf("%ld %d\n", x, y);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是人们所期望的:

1000000000000 -727379968
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,编译器是否应该阻止隐式转换/截断?

g++ (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
Run Code Online (Sandbox Code Playgroud)

c++ g++ overflow integer-overflow

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

标签 统计

c++ ×1

g++ ×1

integer-overflow ×1

overflow ×1