Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Определить в C не работает, когда ввод составной

Автор вопроса: MM PPОтветов: 1

Проблемы с использованием define в C. Хорошо работает, когда я вызываю OP(9), но когда я вызываю OP(7+2), я получаю 23. Почему?

 #include<stdio.h>
 #include<stdlib.h>

 #define OP(x) x*x;

 int main() {
 int x,y;

 x = 2;
 y = OP(7+2);
 printf("%d", y);

 return 0;

 }

Почему печатает 23, а не 81?

  • Используйте скобки. Это должен быть дублирующий вопрос. jxh 09.02.2017
  • Скобки - или их отсутствие. Посмотрите на 7 + 2*7 + 2 - это 23. Если вы хотите (7+2)*(7+2), добавьте круглые скобки: #define OP(x) ((x)*(x)) - все! Jonathan Leffler 09.02.2017
  • ...но когда я звоню OP(7+2)... Вы не можете звонить OP(7 + 2). OP - это макрос, а не функция. Макросы вызывать нельзя. Их можно только заменить/заменить. Остальное следует. AnT 09.02.2017

cdefinition

Ответы

Ответ 1 · рейтинг 4 · Ryan

Вы должны заключить x в круглые скобки, чтобы установить приоритет. Однако также важно заключать все выражение в круглые скобки.

#define OP(x) ((x)*(x))

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы