由于项目需要在64位和32位系统运行,需要判断当前系统是32位还是64位. 网上很多方法,但是都感觉不是很简洁,最后发现可以使用int的长度来判断:看代码 /// <summary> /// 判断操作系统是32位还是64位 /// </summary> virtual public int PlateFormRunMode { get {
要求是不使用sizeof,一开始写了个看似可以,但是有问题的方法: long* a = NULL; ; int n = (char*)b - (char*)a; 这个方法等价于sizeof(long),但这其实有问题,在32位编译器上编译得到的代码在64位机器上得到的结果还是n=4,如果是64位编译器那么得到n=8. 上面的思路其实有问题,因为类型的大小依赖于编译器.从另外一个方面来想,指针的大小是机器决定的(有问题),所以如果能够使用sizeof的话,直接根据sizeof(int*)就可以判断