целочисленная арифметика внутри printf () - PullRequest
0 голосов
/ 19 февраля 2019

Новое в программировании на C.Почему вывод этого кода ниже не 0 20 0, а вместо этого 1 20 0?

printf ( "\n%d %d %d", x != 1, x = 20, x < 30 ) ;

Насколько я понимаю, код присваивает x значение, отличное от 1 (1 = true, следовательно!= true это 0)?Может ли кто-нибудь провести меня по логике?

1 Ответ

0 голосов
/ 19 февраля 2019

Я не знаю, почему в некоторых образовательных системах так популярно выбирать все более изобретательные способы обучения плохому коду с неопределенным поведением, но поскольку порядок оценки этих аргументов не определен, поведение вашей программы не определено.

То есть вы можете предполагать, что код «запускается» слева направо или справа налево, но ничего такого не требуется.На самом деле, может случиться что угодно , включая любой выход или убийство моей семьи.Поэтому, пожалуйста, не надо!

...