define
을 사용하는 문제 OP(9)
을 호출 할 때 제대로 작동하지만 OP(7+2)
이라고 호출하면 23이됩니다. 왜?입력이 복합 인 경우 C로 정의되지 않음
#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
괄호 - 또는 그것의 부족. '7 + 2 * 7 + 2' - 즉'23'을보십시오. '(7 + 2) * (7 + 2)'를 원한다면 괄호'#define OP (x) ((x) * (x))'를 추가하십시오! –
"...하지만 OP (7 + 2)를 호출 할 때 ..."OP (7 + 2)를 "호출 할 수 없습니다." 'OP'는 매크로가 아니라 함수입니다. 매크로는 "호출"할 수 없습니다. 그들은 substutuded/교체 수 있습니다. 나머지는 다음과 같습니다. – AnT