C语言中常数的数据类型

  1. //编译环境:codeblocks+gcc
  2. #include <stdio.h>
  3. #include <stdint.h>
  4. int Fun()
  5. {
  6.     uint64_t y;
  7.     uint32_t x1, x2;
  8.     //y = 3000 * 24000000 / 1000;//常数默认作为32位数据,临时运算结果也是32位,溢出错误
  9.     //y = (uint64_t)3000 * (uint64_t)24000000 / 1000;//常数强制转换为64位,运算正确
  10.     y = 3000ULL * 24000000ULL / 1000ULL;//常数使用64位格式,运算正确
  11.     printf(“0x%llX\n”, y);//输出
  12.     x1 = (uint32_t)(y & 0xFFFFFFFF);
  13.     x2 = (uint32_t)(y >> 32);
  14.     printf(“0x%X,0x%X \n”, x1, x2);//输出结果
  15. }
  16. int main()
  17. {
  18.     Fun();
  19. }

标签