#include <iostream>
#include <iomanip>
#define SQR(x) x*x
int main()
{
int a = 10, k = 5, m = 3;
int b = SQR(k + m);
a += SQR(k + m);
std::cout << a << std::endl;
system("pause");
return 0;
}
上面这段代码最终打印的a的结果是多少呢?刚看到毫不犹豫的回答74,但是实际是33,究竟是怎么回事,下面来仔细看看是什么原因
使用预编译命令预编译这段代码,在c语言中预编译过程会将函数中宏替换成对应的值,如SQR(b+2)这个宏将会被替换成相应的值,预编译后代码如下:
#include <iostream>
#include <iomanip>
int main()
{
int a = 10, k = 5, m = 3;
a += k + m * k + m;
std::cout << a << std::endl;
system("pause");
return 0;
}