Почему выход равен 37 ?
пустота главная()
{
int a=10,b;
Б=а++ + ++а+ а ++;
printf("%d",a);
}
Что я уже пробовал:
пустота главная()
{
int a=10,b;
Б=а++ + ++а+ а ++;
printf("%d",a);
}
Никогда не используйте несколько инкрементов/декрементов для одной и той же переменной внутри формулы, результат непредсказуем с помощью C.
b=++a + ++a+ ++a;
b
может быть где-то между 33 и 39.5.
Спасибо
Это неправильно!
Ваша программа будет печатать 13.
Это потому что вы печатаете "ля" нет "б".
Теперь предположим, что вы хотели бы знать результат b, Я полагаю.
Во - первых, не рекомендуется использовать этот вид одних и тех же переменных до/после инкремента несколько раз в выражении, так как это создает путаницу, а также делает его менее читаемым.
Однако давайте посмотрим, почему это происходит.
Если вы проверите результат следующего-
b=++a + ++a
Вы не (полностью) неправы. Но вы ошибаетесь в том смысле, что компилятор не гарантирует, что он будет делать это в таком порядке. Правило таково: Не используйте несколько инкрементов декрементов в одном выражении.
Правда. Спасибо!
в некоторых компиляторах выход равен 39.