#include<stdio.h>
int main()
{
int i=2;
printf("%d %d\n",++i,++i);
return 0;
}
Выходной сигнал 4 4 на gcc. Пожалуйста, объясните этот выводНеопределенный выход с префиксным оператором в C
#include<stdio.h>
int main()
{
int i=2;
printf("%d %d\n",++i,++i);
return 0;
}
Выходной сигнал 4 4 на gcc. Пожалуйста, объясните этот выводНеопределенный выход с префиксным оператором в C
Это неопределенное поведение. Порядок оценки параметров функции не определен стандартом C.
Соответствующие разделы: C99 Раздел 6.5.2.2 Пункт 10
Порядок оценки функционального назначения, фактические аргументы, и подвыражения в пределах фактических аргументов не определено, но есть точка последовательности перед фактическим вызовом.
также в разделе C99 6.5.2.2 Пункта 10
Существует точка последовательности после оценки функции целеуказателя и фактических аргументов, но до фактического вызова. Каждая оценка в вызывающей функции (включая другие вызовы функций) , которая иначе не секретируется отдельно до или после . Выполнение тела вызываемой функции является неопределенным , упорядоченное относительно выполнения вызываемой функции.94)
Вы сами писали, что это «неопределенный» в названии. Что еще нужно объяснить? – Paulpro
так каждый раз ответы на такие вопросы были бы непредсказуемыми? – user2492165
@ user2492165 да, вы можете сказать, что .. – VoidPointer