2014-04-28 2 views
-4

프로그램의 출력을 이해 할 수 없습니다 방법이 프로그램의 출력은 3 3 = 3내가 알고 싶은

#include<stdio.h> 
#include<conio.h> 
main() 
{ 
int a=2,b=3; 
printf("%d %d=%d",a,b,a=b); 
getch(); 
} 
+5

"a = b"는 할당이기 때문에. – OldProgrammer

+0

@ user3582228 어떤 출력을 기대하셨습니까? – fvu

답변

1

함수 인수의 평가 지정되지 않은이다의 순서입니다 왼쪽에서 오른쪽, 오른쪽에서 왼쪽 또는 다른 순서로 표시되므로 a=b 전에 a 또는 b이 평가되지는 않습니다.

중간에 시퀀스 포인트없이 a의 값을 읽고 수정하려고하므로 이 정의되지 않았습니다. 평가 순서가 지정되지 않았기 때문에 다른 플랫폼, 컴파일러, 프로그램, 최적화 설정 등에 따라 결과가 달라집니다. 정의되지 않은 동작은 컴파일러가이 케이스를 특별한 방법으로 처리하지 않아도된다는 것을 의미합니다. 따라서 모든 결과가 가능하며 언어에 관한 한 정확합니다.

관련 문제