#include <stdio.h>
void main()
{
int i = -3, j=2, k=0, m;
m= ++i|| ++j && ++k;
printf("%d%d%d%d", i, j, k, m);
}
Если мы видим порядок оценки в ++i|| ++j && ++k;
мы приедем с оценкой ++j && ++k
сначала будет увеличивать значение у и к, и он будет оценивать как 1 после этого ++i || 1
будет оценивать, что будет увеличивать значение i и присваивать от 1 до m, поэтому выход должен быть -2 3 1 1
, но он дает результат -2 2 0 1
. Я думаю, что здесь отсутствует какая-то концепция.Неожиданное поведение заранее оператора инкремента в C
Зачем писать код, который в лучшем случае нечитаемый? Если вам нужно почесать голову, чтобы понять, если вы делаете что-то неправильно –