【发布时间】:2014-04-13 03:07:51
【问题描述】:
我尝试在我的电脑(X86_64)中测试int和short类型的长度,所以我写了两段代码如下:
简短:
short a;
scanf("%hd%hd",&a,&a+1);
printf("%hd",a+*(&a+1));
int:
int a;
scanf("%d%d",&a,&a+1);
printf("%d",a+*(&a+1));
两者都工作并输出正确答案,但是当我将数字 1 更改为 4 时,第一个效果很好,而第二个在输入后显示 Segmentation fault。
有资料说short和int的长度在x86中都是16位的,不知道x86_64有什么区别,是一样的吗?
另外,是什么导致了Segmentation fault?
PS:我用gcc -Wall -O2 -o filename -lm编译。
【问题讨论】:
-
您为什么认为上面的代码可以帮助您确定任何类型的大小?
-
您可以使用
sizeof表达式来确定类型的大小。printf("%d\n", (int) sizeof(short));
标签: c compiler-construction x86-64