我一直在尝试练习用三元运算符替换我的某些代码中的 if 语句。这导致发现了一个我不明白的奇怪行为。
void plusMinus(vector<int> arr) {
float pos, neg, zero;
for(int num : arr){
num <=0 ? (num == 0 ? zero++ : neg++) : pos++;
}
cout << pos/arr.size() << endl << neg/arr.size() << endl <<zero/arr.size() << endl;
}
使用两个不同的向量:[-4, 3, -9, 0, 4, 1] 和 [1, 2, 3, -1, -2, -3, 0, 0]。第一个打印 -nan、.333 和 .1667。第二个输出 0.375、0.375、0.25。但是,如果我在声明中初始化 pos 如下所示,该函数每次都能完美运行。
void plusMinus(vector<int> arr) {
float pos=0, neg, zero;
for(int num : arr){
num <=0 ? (num == 0 ? zero++ : neg++) : pos++;
}
cout << pos/arr.size() << endl << neg/arr.size() << endl <<zero/arr.size() << endl;
}
三元运算符是否有一些限制,或者这只是我正在使用的网络编译器的限制?