C++ 表达式中的宏未按预期工作
我有一个简单的宏来添加2个变量,这并没有按预期工作C++ 表达式中的宏未按预期工作,c++,macros,C++,Macros,我有一个简单的宏来添加2个变量,这并没有按预期工作 #include <iostream> using namespace std; #define ADD(x,y) (x+y); int main() { int a = 10; int b = 1; int c = ADD(a,b)+1; //c=11 - NOT EXPECTED int c = 1+ADD(a,b); //c=12 - EXPECTED cout<< c;
#include <iostream>
using namespace std;
#define ADD(x,y) (x+y);
int main() {
int a = 10;
int b = 1;
int c = ADD(a,b)+1; //c=11 - NOT EXPECTED
int c = 1+ADD(a,b); //c=12 - EXPECTED
cout<< c;
}
#包括
使用名称空间std;
#定义加法(x,y)(x+y);
int main(){
INTA=10;
int b=1;
int c=ADD(a,b)+1;//c=11-不应为
int c=1+ADD(a,b);//c=12-预期值
cout删除宏末尾的分号,然后像
#define ADD(x,y) (( x ) + ( y ))
否则,例如这一行
int c = ADD(a,b)+1;
相当于
int c = (a + b); +1;
也就是说,它包含变量c
和语句的声明
+1;
没有效果。删除宏末尾的分号,然后像这样写
#define ADD(x,y) (( x ) + ( y ))
否则,例如这一行
int c = ADD(a,b)+1;
相当于
int c = (a + b); +1;
也就是说,它包含变量c
和语句的声明
+1;
无效。删除宏末尾的;
。同时删除宏。删除宏末尾的;
。同时删除宏。最好删除宏。1+1
比添加(1,1)更清晰
。是的,我同意a+b比宏清晰得多。在这里我只是想了解宏的行为。因此这是一个简单的代码。最好删除宏。1+1
比ADD(1,1)清晰得多
。是的,我同意a+b比宏清晰得多。在这里,我只是想了解宏的行为。因此这个简单的代码。