#include <limits.h>
int main(){
int a = UINT_MAX;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我这个 UB 或实现定义?
链接说它的 UB
https://www.gnu.org/software/autoconf/manual/autoconf-2.63/html_node/Integer-Overflow-Basics
链接说它的实现定义
转换规则说:
否则,新类型是有符号的,值不能在其中表示;要么结果是实现定义的,要么引发实现定义的信号。
我们不是将 a 转换max unsigned value为 asigned value吗?
我所看到的方式,gcc 只是截断了结果。