在判断int位宽的时候,一般使用sizeof(int)实现,现在讨论一下,不用sizeof()来实现整数位宽。
基本思想:可以利用地址之间的差值来确定整数位宽,代码实现为:
#include<stdio.h>
void main(){
int a[2];
int b;
b=(int(&a[1])-int(&a[0]))*8;
printf("%d\t",b);
}
会存在这样的错误:b=(&a[1]-&a[0])*8;这个时候的值运行为8,而上面程序值为32,两个的区别为:
b=&a[1]-&a[0]=a+1-a=1是差值,是没有物理意义的
b=(int)&a[1]-(int)&a[0]两个地址的值是int类型的字节数,是有物理意义的。