Dr.*_*eon 9 c c++ 64-bit objective-c long-integer
好的,这是一个奇怪的问题:
unsigned long long变量(我使用过偶数long,效果相同)sizeof返回8,这很好)但是,当我试图转向像这样的值1<<63,并执行一些简单的按位操作时,奇怪的是,我似乎得到了负值.为什么?
我的测试代码:
unsigned long long c = 0;
c |= 1l << 56; printf("c = %lld\n",c);
c |= 1l << 63; printf("c = %lld\n",c);
Run Code Online (Sandbox Code Playgroud)
输出:
c = 72057594037927936
c = -9151314442816847872
Run Code Online (Sandbox Code Playgroud)
旁注:
c = 1l<<63直接做同样的事情也会发生.有什么建议?
Aus*_*oke 22
说明符的d一部分%lld告诉printf该参数应该被视为有符号整数.用一个u代替:%llu.
从手册页:
我,我
int参数转换为带符号的十进制表示法.
o,u,x,X
unsigned int参数转换为 无符号 八进制(o),无符号 十进制(u)或无符号十六进制(x和X)表示法.
| 归档时间: |
|
| 查看次数: |
6976 次 |
| 最近记录: |