【发布时间】:2012-01-22 13:40:37
【问题描述】:
也许我开始生疏了(最近一直在用 Python 写东西)。
为什么不编译?
if ( (int i=f()) == 0)
没有int i=f() 周围的() 我得到另一个更合理的i 错误不是布尔值。但这就是为什么我首先想要括号!
我的猜测是使用括号使其成为表达式,并且表达式中不允许声明语句。是这样吗?如果是,它是 C++ 的语法怪癖之一吗?
顺便说一句,我实际上是在尝试这样做:
if ( (Mymap::iterator it = m.find(name)) != m.end())
return it->second;
【问题讨论】:
-
怎么了?一切
-
@VJovic - 如果您通过如此详尽、有用的答案获得声誉分数,我会徘徊;)
-
不,我会否定;)但是说真的,任何正常的编码标准都禁止这种晦涩的代码。
-
for( int i = f(); i == 0; i=1) {:-)for( Mymap::iterator it = m.find(name); it != m.end(); it = m.end()) {...(仅用作客厅技巧) -
c++ 功能要求:
[if|while]( var_decl_with_init ; expr ) statement
标签: c++ syntax variable-declaration