0
void call(int x,int y,int z)
{
printf("%d %d %d",x,y,z);
}
int main()
{
int a=10;
call(a,a++,++a);
return 0;
}
이 프로그램은 다른 컴파일러에서 다른 출력을 제공하며, Linux에서 컴파일했을 때 m/c 출력이 매우 이상합니다.는 출력을 예측합니다
하지만 값이 함수에 전달 될 때 평가 순서는 스택에서 이루어 지므로 순서가 있어야합니다 .. –
예, 순서는 컴파일러마다 다를 수 있지만 Karl의 말처럼 동작은 정의되지 않습니다. 충돌을 포함하여 무엇이든 할 수 있습니다. –
@ user531802 그건 부적당합니다. 컴파일러는 컴파일러 작성자의 작업을 쉽게하고 최적화 기회를 늘리기 위해 C 언어 표준에서 이러한 세 가지 인수를 임의의 순서로 평가할 수 있습니다. –