我目前正在为考试学习C ++语法和编译器。
我参加了C ++ Mock测试,为即将来临的考试做准备,遇到一个问题,问“以下代码的输出是什么?”。
#include <iostream>
using namespace std;
#define A 0
#define B A+1
#define C 1-B
int main() {
cout << C;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么代码输出2而不是0吗?
B扩展到0+ 1,再C扩展到1- 0+ 1,这说明了结果。
如果你写的话那将是另一回事
#define B (A+1)
Run Code Online (Sandbox Code Playgroud)
这是避免使用宏的一个很好的理由。在C ++中,它们在很大程度上是不必要的:模板和constexpr技术是更好的替代品。
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |