C语言 或运算 细节 溢出
printf("%d\n",(-214783648)|1);
/*-214783647在int为4z字节时的二进制真值是1111 1111 1111 1111 1111 1111 1111 1111;所以-214783648为1000 0000 0000 0000 0000 0000 0000 0000,此已经验证过,用printf("%d\n",1<<31)*/
这个语句的输出为什么为:
-214783647
(能理解这个问题的就帮帮我吧!另外,我是在32位win7下DEVCPP以及32位win7下visual studio2010下跑的程序)
C语言?或运算?细节?溢出
[解决办法]
显然楼主从头错到尾.
[root@vps616 cpp]# ./main
hex=80000000 dec=-2147483648
hex=80000001 dec=-2147483647
[root@vps616 cpp]# cat main.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *const argv[])
{
int n = 1 << 31;
printf("hex=%x dec=%d\n", n, n);
n
[解决办法]
= 1;
printf("hex=%x dec=%d\n", n, n);
return 0;
}