C++ 的if的语法问题……if后边为什么可以跟两个括号吗?

if(0)("blabla")这样的句式,为什么不报错?是什么意思?什么作用?error和warning都没有报。。

if(判断条件)语句
对于一个表达式加上()还是一个表达式,所以这里("blabla")是一个表达式,当然要构成语句后面还要加个;号
故if(0) (a=1);这样是合法的追问

这个是什么作用?。。运行的时候程序是怎么来读取这些代码的?。。

追答

你的问题是编译时候的问题,编译器编译的时候利用BNF文法来匹配
statement加()还是statement

追问

噢。。。括号的问题貌似明白了……也就是说if(0)(a=1);就相当于if(0)a=1;吧?
那if(0)("blabla");是什么意思?怎么可以单独一个字符串?而且还不报错。。

追答

你要知道什么叫表达式,
1就是一个表达式,所以程序里写1;是对的。
if(0)“blala";
这个"blala"是个字符串常量表达式,加个分号构成了一个语句,虽然他什么事情都没做,但确实是一个合法语句。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-21
"abcde"和("abcde")是完全等价的,只要不改变表达式语义和完整性,你可以加很多括号,为什么这是错?追问

那这句话是什么意思?if(0)(“blabla”);

第2个回答  2012-07-21
我也不懂勒,一起学习啊
相似回答