【发布时间】:2013-07-29 18:14:27
【问题描述】:
我有两个具有相同功能的代码 sn-ps,但是一个可以编译,另一个不能编译。为什么?
这个编译。
vector<int>::iterator it;
if ((it=find(v.begin(),v.end(),2))!=v.end()){
}
这个没有。
if ((vector<int>::iterator it=find(v.begin(),v.end(),2))!=v.end()){
}
这是我得到的错误。
main.cpp: In function ‘int main()’:
main.cpp:32:28: error: expected primary-expression before ‘it’
main.cpp:32:28: error: expected ‘)’ before ‘it’
main.cpp:44:5: error: expected ‘)’ before ‘return’
附:可以随意编辑标题 - 我找不到任何描述性内容。
【问题讨论】:
-
可以在
if语句中定义变量,但类型必须立即在第一个打开的括号之后(例如,if (int x = whatever))。代码中的第二个开放括号会破坏它(是的,这经常使该功能无用)。 -
几年前我遇到了这个确切的问题,并在这里得到了很好的答案。 stackoverflow.com/questions/7836867/…