Итак, для двух отдельных фрагментов кода, почему инкремент/декремент действуют по-разному?C Порядок операций
Фрагмент А:
i=7; j=8; k=9;
printf("%d\n", i - 7 && j++ > k);
printf("%d %d %d", i, j, k);
будет производить следующий вывод:
0
7 8 9
Фрагмент B:
while (i > 0)
printf("T minus %d and counting\n",i--);
производит это:
T minus 5 and counting
T minus 4 and counting
T minus 3 and counting
T minus 2 and counting
T minus 1 and counting
Теперь я знаю, что аргументы функций передаются по значению и что он должен иметь какое-то отношение к тому, что j
используется в булевом выражении. Но эти две ситуации кажутся мне противоречивыми. Что тут происходит?
Я предполагаю, что в фрагменте B 'i' инициализируется значением 5? Этот результат ожидается, если это так. –
Какое поведение вы ожидаете? – robert
Я думаю, что @grimetime пытается сказать, что он не понимает, почему 'i -' уменьшает значение i при каждом его вызове, но 'j ++' не изменяет значение j после его вызова. – Jamie