Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 表达式中的宏未按预期工作_C++_Macros - Fatal编程技术网

C++ 表达式中的宏未按预期工作

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;

我有一个简单的宏来添加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;
}
#包括
使用名称空间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比宏清晰得多。在这里,我只是想了解宏的行为。因此这个简单的代码。