ump*_*mps 0 visual-studio-2005 windows-7
我使用Windows 7 64位与MSVC2005和QT(但我怀疑QT导致问题,因为这是基本数据类型char的问题.
所以,当我尝试比较两个char时,就像这样
char A=0xAA;
if(A==0xAA)
printf("Success");
else
printf("Fail");
Run Code Online (Sandbox Code Playgroud)
瞧,它失败了!但是当我这样做的时候
char A=0xAA;
char B=0xAA;
if(A==B)
printf("Success");
else
printf("Fail");
Run Code Online (Sandbox Code Playgroud)
我成功了!实际上当我想到它...嘿我正在使用64位处理器..即使char应该被视为1个字节.它可能存储为4个字节.所以
char A=0xAA;
if(A==0xFFFFFFAA)
printf("Success");
else
printf("Fail");
Run Code Online (Sandbox Code Playgroud)
现在我成功了!!!
但是WTF!这是标准行为!! 如果该死的东西被定义为char,那么编译器不应该知道如何处理它吗?进一步的测试显示,如果char的最高有效位为1,则额外字节仅存储为1.因此0x07和更低的存储为0x00000007.WTF.
实际上我似乎已经回答了我的所有问题...除了谁打电话来修复这个错误.这甚至是一个错误吗?您可以在64位操作系统上使用MSVC2005,或者我是一个白痴.我想我应该让qt创建者使用MSVC2010 ..该死的.我花了2个小时.
| 归档时间: |
|
| 查看次数: |
186 次 |
| 最近记录: |