• 6767阅读
  • 3回复

关于定义LONGLONG型的负数的问题 [复制链接]

上一主题 下一主题
离线tangxunmin
 

只看楼主 正序阅读 楼主  发表于: 2012-09-07
— 本帖被 XChinux 执行加亮操作(2012-10-12) —
如图:


定义了一个LONGLONG型的变量等于-3000000000;
但是用监视器看下a的值如图:




为:0x000000004d2fa200,这明显已经不是个负数了;


但是如果用正数,按位取反再加1的方法就是正确的。
如图:


变量c就能得到正确的值:
如图显示




a = 0x00000000b2d05e00;
b = 0xffffffff4d2fa200;
c = 0xffffffff4d2fa201;
这个c就是正确的-3000000000;


难道直接定义负数,还是按照32位的来计算的??
离线kh99827765

只看该作者 3楼 发表于: 2012-10-12
a=-3000000000ll;
正解!
离线tangxunmin

只看该作者 2楼 发表于: 2012-09-07
引用第1楼dbzhang800于2012-09-07 12:52发表的  :
64位整数 在msvc下需要写成 1234i64 这样子!
而其他编译环境下一般都是 1234LL 这样

真是这样-3000000000写成-3000000000i64就对了


不过如果是变量的话,还是按上面那个正数按位取反加1吧。方便点
离线dbzhang800

只看该作者 1楼 发表于: 2012-09-07
64位整数 在msvc下需要写成 1234i64 这样子!
而其他编译环境下一般都是 1234LL 这样
快速回复
限100 字节
 
上一个 下一个