sizeof는 실제 기능이 아닌 것 같습니다.C/C++에서 sizeof()의 메커니즘은 무엇입니까?
int i=0;
printf("%d\n", sizeof(++i));
printf("%d\n", i);
당신이 얻을 수 출력과 같은 : 예를 들어
, 당신은 다음과 같이 작성하는 경우
4
0
그리고 당신이 조립 코드로 파고 때,이 같은 STH를 찾을 수 있습니다 :
movl $4, %esi
leaq LC0(%rip), %rdi
xorl %eax, %eax
call _printf
그래서 컴파일러는 printf의 매개 변수로 상수 "4"를 직접 추가합니다. 그렇다면 sizeof는 무엇을합니까?
sizeof에 전달 된 식은 계산되지 않으므로 사전 증가하지 않습니다. 일부 코드에 버그를 도입하는 (또는 이해하기 어려운) 방법입니다. – PaulMcG