int64 tempConVal = 0xFFFFFFFFF;
这样定义变量会产生警告:
warning: implicit conversion from ‘long long’ to ‘int64’ (aka ‘long’) changes value from 68719476735 to -1 [-Wconstant-conversion]
且定义的变量在使用的时候还是int32位;
解决办法就是在数据前强制定义:
int64 tempConVal = (int64)0xFFFFFFFFF;
这样定义就不会出现上述问题;
原因是程序在运行时通常会将数据默认成32位。
定义int64位:
typedef signed long long int int64;
定义Uint64:
定义int64位:
typedef unsigned long long int Uint64;
32系统中 short与short int型数据占2个字节(16位);int、long int、long型数据占4个字节(32位);long long 型数据占8个字节(64位)。
所以,short与short int可以表示的的最大范围是:-32768<---->32767
int、long int、long 可以表示的最大范围是:-2147483648<---->2147483647
long long 可以表示的最大范围是:-9223372036854775808<—>9223372036854775807