关于数据类型,很多都是向量类型。感觉不很清楚。我只定义一个64位的变量,如何做?
另外long到底是32位的还是64位的呢?我跟踪似乎是32位的,但编程指南里面却分情况讨论,不知为何?
楼主您好,C标准没有规定long的大小。这个是平台(例如64位和32位平台), OS,以及编译器三者约定俗成的.
对BSD上的C编译器来说来说,在x64下sizeof(long)是8,x86下是4.
对Windows上的C编译器来说,在x64下sizeof(long)是4, x86下也是4.
有个好玩的现象,同一个编译器,例如gcc, 在x64的*NIX上sizeof(long)==8, 但是在windows下,它的表达式sizeof(long)确实4(mingw64下的gcc)
所以楼主可知,因为无标准定死,加上各个平台上约定的惯例不同,所以结果不一定。如果楼主想知道当初的约定的由来,以及相关只是,请搜索ILP(integer, long, pointer) size等字样。
如果楼主想要一个具有可一致性的固定大小,我建议您这么做:
#include <stdint.h> //需要您的编译器支持C99标准,或者有这个头文件
然后:
int64_t dog = 1234;
或者
uint64_t cat = 1234;
即可。
int64_t和uint64_t确保了在不同的平台,编译器下,大小固定。