【发布时间】:2014-05-13 16:48:22
【问题描述】:
当我运行这段代码时:
#include <iostream>
#include <map>
using namespace std;
void f1() {
map<int, int> m;
m[5] = m.find(5) == m.end() ? 1 : 2;
cout << m[5] << endl;
}
void f2() {
map<int, int> m;
if (m.find(5) == m.end())
m[5] = 1;
else
m[5] = 2;
cout << m[5] << endl;
}
int main() {
f1();
f2();
return 0;
}
我得到以下输出:
2
1
为什么我在使用三元运算符时会得到错误的输出?
【问题讨论】:
-
你在同一行中做了太多的事情。我强烈建议不要这样做。
标签: c++ ternary-operator