Проблемы с использованием 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?
7 + 2*7 + 2
— это23
. Если вы хотите(7+2)*(7+2)
, добавьте круглые скобки:#define OP(x) ((x)*(x))
— все! - person Jonathan Leffler   schedule 09.02.2017OP(7+2)
... Вы не можете звонитьOP(7 + 2)
.OP
— это макрос, а не функция. Макросы вызывать нельзя. Их можно только заменить/заменить. Остальное следует. - person AnT   schedule 09.02.2017