Это int c = (a==b)
- это именно то, что я хотел бы сказать в моей программе на C, с компиляцией с GCC. Я могу это сделать, очевидно (это работает отлично), но я не знаю, может ли это вызвать неопределенное поведение. Моя программа не будет скомпилирована с каким-либо другим компилятором или в других архитектурах. Является ли это законным ANSI C? Благодарю.Оценка с правой стороны задания
ответ
Это совершенно законно. если a
равно b
, то c
будет 1. иначе, это будет 0.
Если 'a' равно' b', то 'c' может быть чем угодно отличным от нуля, не так ли? –
@Teh: Нет, это должно быть 1. (C99 §6.5.9/3 так говорит.) – kennytm
Я не уверен, но я думаю, что это должно быть 1. (любое ненулевое число означает true, но сравнение операторов return only 0 or 1) Edit: Я написал это перед просмотром комментария KennyTM. – asaelr
int c = (a == b);
это совершенно законно. Инициализация является частью стандарта C (C99 §6.7.8), правая сторона может быть любой присваивание-выражение, включая a == b
(конечно, при условии, что a
и b
определены и имеют сопоставимый тип).
спасибо. Именно этот ответ мне нужен. –
Ну, это зависит от того, какие типы a
и b
есть. Если они являются типами, которые поддерживают проверку равенства, то да, это совершенно законно.
Это совершенно верно, если c
объявлен в области объема.
При объявлении в области видимости файла оно недействительно, поскольку инициализатор должен быть постоянным выражением.
a == b
- выражение и в этом смысле не отличается от другого выражения, например, a + b
или a & b
.
- 1. Почему не выполняется оценка правой стороны оператора &&?
- 2. Выравнивание rightBarButtonItem с правой стороны?
- 3. Календарь заполняется с правой стороны
- 4. Видео обрезано с правой стороны
- 5. Подсказка с правой стороны ввода
- 6. Загадочный пробел с правой стороны
- 7. Использование SlidingPaneLayout с правой стороны?
- 8. Таблицы, вырезанные с правой стороны
- 9. jPanelMenu - Слайд с правой стороны
- 10. Разбор NSString с правой стороны?
- 11. Оператор с правой стороны - Javascript
- 12. Ящик с правой стороны экрана?
- 13. Меню правой стороны SWRevealViewController
- 14. Флип с правой стороны с задержкой
- 15. QPushButton с меню - падение с правой стороны
- 16. уменьшить длину правой стороны границы
- 17. переполнение правой стороны на странице
- 18. Позиция правой стороны подстроки MySQL
- 19. Заголовки строк DataGrid с правой стороны DataGrid
- 20. перемещения окна поиска с правой стороны (блоггер)
- 21. Найти цифры с правой стороны в Hive
- 22. Навигационный ящик начинается с правой стороны
- 23. анимация div для слайда с правой стороны
- 24. Путь к каталогу с правой стороны Нажмите
- 25. Поддержка с правой стороны к левому краю
- 26. Удалить пробелы только с правой стороны строки
- 27. Sublime Side Bar с правой стороны
- 28. jQuery: слайд только с правой стороны
- 29. Плавающая навигация с правой стороны от логотипа
- 30. Установить текст aligment с правой стороны
Что не определено об этом? o_O – kennytm
Какой компилятор не принимает его? – cnicutar
Итак, вы имеете в виду ответ «да, это законно»? Зачем вам отвечать на другой вопрос? –