gendo是宏定义函数,所以,这个加不加括号要看你的gendo宏是如何定义的了!
如果gendo 这个宏有多条语句实现,则必须加括号,不然可能编译都会有问题!
追问宏定义函数是 if(-1==gen(a,b,c)) return-1;gen函数里有多条语句。
追答你这个宏,在解开后,如果没有括号,结果会是:
if(mulop==times)
if(-1==gen(opr,0,4)) return-1;
else
if(-1==gen(opr,0,5)) return-1;
执行过程:if(mulop==times)条件成立,才去执行gen(opr,0,4) ,执行gen(opr,0,4) 返回不是-1,又会去执行gen(opr,0,5)
有括号,结果会是:
if(mulop==times)
{
if(-1==gen(opr,0,4)) return-1;
}
else
{
if(-1==gen(opr,0,5)) return-1;
}
执行过程:if(mulop==times) 条件成立,执行gen(opr,0,4) 否则执行gen(opr,0,5)
追问谢谢