가 질문에 모든 규칙 다음 아래의 코드를 가지고 :출력은 무엇이며 그 이유는 무엇입니까? 내가 범위를 통과했다
#include <stdio.h>
int main()
{
int x = 1, y = 2, z = 3;
printf(" x = %d, y = %d, z = %d \n", x, y, z);
{
int x = 10;
float y = 20;
printf(" x = %d, y = %f, z = %d \n", x, y, z);
{
int z = 100;
printf(" x = %d, y = %f, z = %d \n", x, y, z);
}
}
return 0;
}
나는 마지막 인쇄 변경하는 경우 : 나는 다음과 같은 출력을 얻을
printf("x = %d, y = %d, z = %d \n", x, y, z);
을하는 I 이해가 안 : (Ideone link)
x = 10, y = 0, z = 1077149696
을 그래서, 당신은 왜 Z 인쇄가 그 값 설명 할 수 있을까?
printf'는'사용 vargs' 및 기대 '때문에 내 가정은'%의 d' : 현대 컴파일러에, GCC 또는 그 소리처럼, 그것은 당신의 형식 사양이 잘못 불평 것
주 'float y '의 경우 float의 첫 번째 4 바이트를 0으로 읽고 후반의 4 바이트를 다음'% d '인 z로 읽음으로써 z는 정의되지 않은 값을 출력합니다. – texasbruce
이 코드는 ideone의 예제와 동일하지 않습니다. – Galik
-1이 코드는 완전히 작동하며 결과를 가져온 ideone의 코드와 다릅니다. ideone 코드에는 버그가 있습니다. – Galik