2013-08-18 3 views
-2
#include <stdio.h> 
main() 
{ 
int a=1; 
printf("%d %d %d %d %d\n",++a,a++,++a,++a,a++); 
a=1; 
printf("%d %d %d %d %d",a,a++,a,++a,a); 
} 

Когда я запускаю его, он дает следующий результат.Объяснить вывод следующей программы C

6 4 6 6 1 
3 2 3 3 3 

Просьба пояснить код.

+5

** Неопределенное поведение **. [Прочтите это ** внимательно **, если вы хотите знать почему.] (Http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points) – WhozCraig

+1

Звучит как домашнее задание. –

+1

Я новичок в языке C ... Пожалуйста, объясните мне код .. Это не домашнее задание ... – user1521160

ответ

2

Порядок оценки аргументов функции не определен, поэтому операторы ++ могут применяться в любом порядке. Вы смотрите на результаты неопределенного поведения.