C 以下程序是如何工作的? #包括 #定义SQR(x)(x*x) int main(){ INTA; a=SQR(3-4); printf(“%d”,a); 返回0; }

C 以下程序是如何工作的? #包括 #定义SQR(x)(x*x) int main(){ INTA; a=SQR(3-4); printf(“%d”,a); 返回0; },c,macros,c-preprocessor,C,Macros,C Preprocessor,产出:-13 宏函数在这里是如何工作的,以使输出为-13 SQR中的表达式得到3-4*3-4,并且给定运算符的进位,给出该结果。这是宏中常见的错误。原则上,如果每个参数涉及一些计算,则应使用括号括起: #include<stdio.h> #define SQR(x) (x*x) int main(){ int a; a= SQR(3-4); printf("%d",a); return 0; } 你会得到预期的结果。它的工作原理如下:3-4*3-4。要得到正确的答案,请使用#de

产出:-13


宏函数在这里是如何工作的,以使输出为-13

SQR中的表达式得到
3-4*3-4
,并且给定运算符的进位,给出该结果。这是宏中常见的错误。原则上,如果每个参数涉及一些计算,则应使用括号括起:

#include<stdio.h>
#define SQR(x) (x*x)
int main(){
int a;
a= SQR(3-4);
printf("%d",a);
return 0;
} 

你会得到预期的结果。

它的工作原理如下:
3-4*3-4
。要得到正确的答案,请使用
#define SQR(x)((x)*(x))
它的计算结果是
3-4*3-4=3-16=-13
@Rohan不是3-12-4=-9-4吗?@Mauren:有什么区别吗<代码>+和
-
具有相同的优先级。@Rohan当然有,我只是想知道计算的顺序。
#define SQR(x) ((x)*(x))