在c/c++中,整型一般来说是32位的,如long、int等。而对于64位的整型,需要用一些特殊的定义。如long long或uint64_t。

  这些值在使用printf输出时,需要做一些修正才可以正确输出,如下示例:


  
  1. #include <inttypes.h> 
  2. #include <stdio.h> 
  3. int main() 
  4.     uint64_t t = 111111111111111142; 
  5.     printf("1. %d\n",t); 
  6.     printf("2. %lu\n",t); 
  7.     printf("3. " "%" PRIu64 "\n", t); 
  8.     return 0; 

用gcc编译,运行结果如下:

可见,只有使用第三种方法,才可以顺利的显示出64位的数值来。

 

另外,在VC10中,并没有<inttypes.h> 。

VC10中有一个<stdint.h>,其中定义了uint64_t,但没有定义PRIu64。

在gcc中,<stdint.h>是包含在<inttypes.h>中的。

所以,上述的第三种方法,无法在VC中实现。在VC中,大家还是使用std::cout作为输出方式吧。