longlong类型是怎么存储的,32位情况下,我用按位与的方法得到的64位值不对
我按位与没问题啊。
#include<stdio.h>int main()
{
long long n1,n2,n3;
n1=4294967295;//1111 1111,1111 1111,1111 1111,1111,1111
n2=4294967294;//1111 1111,1111 1111,1111 1111,1111,1110
printf("long long型大小为%d位\n",sizeof(n1)*8);
printf("1111 1111,1111 1111,1111 1111,1111,1111(十进制4294967295)\n");
printf("按位与\n");
printf("1111 1111,1111 1111,1111 1111,1111,1110(十进制4294967294)\n");
printf("=%I64d",n1&n2);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-02-25
就是用4个字节存低四位,4个字节存高四位啊……追问
好像没这么简单,我赋值3,低四字节是,0000……0011,问题是高四字节也是这个值
第2个回答 2015-02-25
看了你在楼上的追问, 不知道你怎么确定的. 以下程序
#include <stdio.h>int main()
{
long long x = 3LL;
unsigned char* p = (unsigned char*) &x;
unsigned i;
for (i = 0; i < sizeof(long long); ++i) {
printf("%d ", *(p + i));
}
printf("\n");
return 0;
}
在 x86 机器上运行结果为
3 0 0 0 0 0 0 0
本回答被网友采纳