我不明白cin>>a中的",b[a]",b[a]=1;
using namespace std;
int i, t, n, x, a;
main()
{
int t;
cin >> t;
while (t--)
{
cin >> n >> x;
int b[n + x] = {0};
while (n--)
cin >> a, b[a] = 1; // ***here is my question
for (i = 1; x > 0 || b[i] != 0; i++)
if (b[i] == 0)
x--;
cout << i - 1 << endl ;
}
return 0;
}
在这里,为什么在“cin>> a , b[a] = 1 ;”中使用了“,” 我不明白使用它的目的。
回答
这是一个写得不好的代码的例子(让它变得奇怪和难以阅读)。
在 C 和 C++ 中有,运算符,其中计算两个参数,最后一个作为整个表达式的值返回。
所以这一行:
cin >> a, b[a] = 1;
cin >> a, b[a] = 1;
的返回值operator,被丢弃cin >> a,b[a] = 1只是被评估。
这是避免使用括号的糟糕方法,应该这样写:
我相信你可以轻松阅读。