предсказать выход - PullRequest
       1

предсказать выход

0 голосов
/ 06 декабря 2010
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 был довольно странным, по любой причине.

1 Ответ

3 голосов
/ 06 декабря 2010

Потому что поведение не определено.Компилятору разрешается оценивать a, a++ и ++a в любом порядке, прежде чем передавать их в call().(Технически, потому что мы вызвали неопределенное поведение, ему на самом деле не нужно ничего делать конкретно в этот момент; он может писать любой код, который ему нравится.) В зависимости от того, в каком порядке они оцениваются, результаты могут отличаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...