我知道〜0将评估最大字大小的位1(并且因此关心可移植性),但是我仍然不知道为什么((1
分享.<="" iv="">
看看这些行:
1. printf("%X",~(~0 << 31) ); 2. printf("%X",(1 << 31) - 1 );
第1行编译并按预期行事.
第2行给出表达式中的警告整数溢出.
这是因为1< 31被默认处理为有符号的int,因此1< 31 = -2147483648,它是最小可能的整数. 结果,休息1导致溢出.
相关文章
解决方法
看看这些行:
1. printf("%X",(1 << 31) - 1 );
第1行编译并按预期行事.
第2行给出表达式中的警告整数溢出.
这是因为1< 31被默认处理为有符号的int,休息1导致溢出.