C ++允许程序员以以下方式重新定义符号
#define A 0
但是当这些重新定义的符号在彼此的上下文中并以算术方式使用时,它们的行为方式是不寻常的,因为这些值被视为字符串,而不是文字。
我对该算法使用的逻辑感到困惑,并希望对它的工作原理进行解释。我已经进行了多次测试,试图通过使用不同的值来了解其工作原理,但仍然让我感到困惑。
示例1:
#define A 0 #define B A+1 #define C 1-B cout << C;
示例2:
#define ALPHA 2-1 #define BETA ALPHA * 2 cout << BETA;
示例1:预期输出为0,实际输出为2示例2:预期输出为2,实际输出为0
谁能解释这是如何工作的?
C ++允许程序员以#define A 0的方式重新定义符号,但是由于......>
cout << C;
cout << 1-B;
cout << 1-A+1;
cout << 1-0+1;
cout << BETA;
cout << ALPHA * 2;
cout << 2-1 * 2;
#define
预处理程序宏支持文本替换
#define A 0
#define B A+1
#define C 1-B
cout << C;