我期待以下程序的答案为400 ......但为什么它是120?
#include<stdio.h>
#define N 10+10
int main()
{
int a = N*N;
printf("%d", a);
}
答案 0 :(得分:7)
#define
'常量按字面顺序插入到代码中,因此有效地
int a = 10+10*10+10;
被解析为
(10 * 10) + 20 = 120;
N
常数STAYS 10+10
的值。它未被评估/存储为20
。
答案 1 :(得分:1)
你这样做10+10*10+10
请改用此#define N (10+10)
。
答案 2 :(得分:0)
在你的计划中:
#include<stdio.h>
#define N 10+10
int main()
{
int a = N*N;
printf("%d", a);
}
定义将为N的值改变N,然后进行计算,所以:
int a = 10+10*10+10;
int a = 10+100+10;
a = 120;
您需要做的是:
#define N (10+10)
因此,当你加上括号时,首先计算总和,然后计算乘法。
答案 3 :(得分:0)
变成
#include<stdio.h>
#define N 10+10
int main()
{
int a = 10+10*10+10;
printf("%d", a);
}
常数是10 + 10,而不是20.这种情况随处可见。