Когда я пытался выяснить, результат !0
определяется реализацией, ожидая, что он будет неравным нулю. Я просто прочитал что-то, что меня смутило.Пример оператора запятой в ansi c 1999 TC3
(Кстати это может быть на некоторых реализациях -1
или 1
или это строгое определено Если какой-либо один может мне сказать в комментарии было бы хорошо?)
Но мой реальный вопрос:
в
6.5.17 Разделенный оператор 2
сказано:
Если предпринимается попытка изменить результат работы оператора запятой или получить доступ к нему после следующей точки последовательности, поведение не определено.
В следующей строке приведен пример того, как анализировать параметр в функции с использованием оператора запятой.
f(a, (t=3, t+2), c);
Но, к примеру, пример моего знания пока неопределенного поведения, не так ли? С t
получает присвоенный 3
, а в следующей последовательности он увеличивается на 2
.
Но в стандарте не упоминается, что пример недействителен.
Или задание не подлежит изменению как модификация?
«Но стандарт не упоминает, что пример недействителен». Это означает, что пример действителен. – devnull
Да, вы не говорите ... но мой вопрос был ПОЧЕМУ он действителен? как я понимаю правило, это не – dhein
Операторы == (равные) и! = (не равные) аналогичны операциям реляционного , за исключением их более низкого приоритета.93) Каждый из операторов дает 1, если Указанное отношение истинно и 0, если оно ложно. нашел его сам. – dhein