69,371
社区成员
发帖
与我相关
我的任务
分享
//编译环境:codeblocks+gcc
#include <stdio.h>
#include <stdint.h>
int Fun()
{
uint64_t y;
uint32_t x1, x2;
y = 3000 * 24000000 / 1000;
printf("0x%llX\n", y);//输出错误结果:0xFFFFFFFFFFF08554 ,Why??? int64位不能正确运算吗?
x1 = (uint32_t)(y & 0xFFFFFFFF);
x2 = (uint32_t)(y >> 32);
printf("0x%X,0x%X \n", x1, x2);//输出错误结果:0xFFF08554, 0xFFFFFFFF
y = 3000 * (24000000 / 1000);
printf("0x%llX\n", y);//输出正确结果: 0x44AA200
x1 = (uint32_t)(y & 0xFFFFFFFF);
x2 = (uint32_t)(y >> 32);
printf("0x%X,0x%X \n", x1, x2);//正确结果 :0x44AA200, 0x0
}
int main()
{
Fun();
}
y = 3000ui64 * 24000000ui64 / 1000ui64;
C/C++语言整数常量语法(参考3楼)不过关。