#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;
}