也许我有点生疏了(最近一直在写 Python)。
为什么这段代码不能编译?
if ( (int i=f()) == 0)
如果在int i=f()
周围没有加上()
,我会得到另一个更合理的错误,即i
不是布尔值。但这正是我想要括号的原因!
我猜使用括号将其变成了表达式,而声明语句不允许出现在表达式中。是这样吗?如果是,这是C++语法的怪癖之一吗?
顺便说一下,我实际上是在尝试做这个:
if ( (Mymap::iterator it = m.find(name)) != m.end())
return it->second;
for (int i = f(); i == 0; i=1) {
for (Mymap::iterator it = m.find(name); it != m.end(); it = m.end()) {
...(仅用于巧妙的把戏) - greggo[if|while](var_decl_with_init; expr) statement
- greggo