는 내 컴퓨터 (X86_64)에 int
및 short
유형의 길이를 테스트하려고, 그래서 나는 울부 짖는 소리와 같은 코드의 두 가지 썼다 : 짧은 :메모리 할당 기능으로 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
을 발생 시켰습니까?
추신 : 나는 gcc -Wall -O2 -o filename -lm
을 사용하여 컴파일합니다.
위의 코드가 어떤 유형의 크기를 결정하는 데 도움이된다고 생각하십니까? –
'sizeof' 표현식을 사용하여 유형의 크기를 결정할 수 있습니다. 'printf ("% d \ n", (int) sizeof (short));' –