【发布时间】:2022-01-11 01:35:17
【问题描述】:
我发现 C 三元运算符 (?:) 的一个奇怪行为。 在下面的代码中,b 和 c 的期望值都应该是 0,但 b 是 -2。 我检查了C operator precedence,并确保减号(-) 大于或等于(>=),它高于条件运算符(?:)。谁能解释一下为什么 b 和 c 的值不同?
#include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;
int main() {
int i;
vector<int> a;
for (i = 0; i < 29; ++i)
a.push_back(i);
int b = 27 - a.size() >= 0 ? 27 - a.size() : 0;
int c = 27 - 29 >=0 ? 27 - 29 : 0;
cout << b << endl;
cout << c << endl;
return 0;
}
【问题讨论】:
标签: vector conditional-operator