#include <iostream>
using namespace std
#define SQUARE(x) (x+1 *x+1) // Complete the Macro defion
int main() {
int i, j;
cin >> i;
j = SQUARE(i + 1);
cout << j << endl;
return 0;
}
答案 0 :(得分:1)
预处理器执行宏替换,因此,我们做同样的事情:
openCV
输出留给读者练习。 (请记住,数学优先级规则适用。)
提醒:宏是邪恶的,更喜欢内联函数。例如,Python
有意义吗?
该宏可以轻松替换为:
#include <iostream>
using namespace std;
#define SQUARE(x) (x+1 *x+1) // Complete the Macro defion
int main()
{
int i, j;
cin >> i;
// Substitute "i + 1" for "x" in macro:
j = i + 1 + 1 * i + 1 + 1;
cout << j << endl;
return 0;
}
SQUARE("HELLO")
是建议编译器替换调用所在的函数 inline 的代码,从而消除了函数调用。
上面的代码阻止某人执行inline int SQUARE(int x)
{
return (x + 1) * (x + 1);
}
,因为编译器会将其标记为错误。