Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Код в си почему так выводит?

юл дома Ученик (19), на голосовании 5 месяцев назад
int main ()
{
int t;
t=15;
t = 15;
t= t - 2 * t + 5;
printf("%d",t);
}
выводит - 10
а если так
int main ()
{
int t;
t=15;
t = 15;
t - 2 * t + 5;
printf("%d",t);
}
15?
Голосование за лучший ответ
BaNaN Мыслитель (7235) 6 месяцев назад
потому что
t= t - 2 * t + 5;
t - 2 * t + 5;
Татьяна Просветленный (36384) 6 месяцев назад
 int main ()  
{
int t;
t = 15;
t = t - 2 * t + 5;
printf("%d", t);
}
Строка t = t - 2 * t + 5; вычисляется следующим образом:

Сначала подставляются значения: t = 15 - 2 * 15 + 5;
Выражение внутри вычисляется слева направо:
2 * 15 получается 30.
15 - 30 получается -15.
-15 + 5 получается -10.
Таким образом, t присваивается значение -10.
Следовательно, printf выводит -10.

 int main ()  
{
int t;
t = 15;
t - 2 * t + 5;
printf("%d", t);
}
Строка t - 2 * t + 5; не имеет оператора присваивания. Это выражение вычисляется, но его результат не используется и не присваивается t. Значение t остаётся неизменным:

t равно 15, как было установлено на предыдущем шаге.
Следовательно, printf выводит 15.
Основная разница в том, что без оператора присваивания (=) значение переменной t не изменяется, а с оператором присваивания значение переменной t изменяется в соответствии с выражением.
Андрей Панарин Искусственный Интеллект (249370) 6 месяцев назад
 t = t - 2 * t + 5; 
Здесь идет присвоение переменной t числа: 15 - 2 * 15 + 5 = 15 - 30 + 5 = -15 + 5 = -10.

 t - 2 * t + 5; 
Здесь просто идет выражение. Посчитали и забыли. Значение t по-прежнему 15.
qq Мастер (1076) 6 месяцев назад
В первом случае значение переменной t пересчитывается и присваивается результат выражения t - 2 * t + 5, что приводит к t = 15 - 2 * 15 + 5 = 15 - 30 + 5 = -10. Поэтому выводится -10.

Во втором случае значение переменной t не пересчитывается и остаётся 15, поскольку результат выражения t - 2 * t + 5 не присваивается никуда. Поэтому выводится 15.
Jurijus Zaksas Искусственный Интеллект (445813) 6 месяцев назад
Ты сам там аж два раза написал, что t=15, чего ж ты ожидаешь-то?
Похожие вопросы