ORing of statements
ORing of statements
这两种写作风格的区别在哪里。编译器在第一种情况下显示正确答案,在第二种情况下则显示错误答案。
1.
string s[6];
for(int i=0;i<6;i++) cin>>s[i];
if(s[0]==s[2] && s[0]==s[4]) { cout<<"YES"<<endl; }
else if(s[0]==s[2] && s[0]==s[5]) { cout<<"YES"<<endl; }
else if((s[0]==s[3] && s[0]==s[5])) { cout<<"YES"<<endl; }
else if((s[0]==s[3] && s[0]==s[4])) { cout<<"YES"<<endl; }
else if((s[1]==s[2] && s[1]==s[4])) { cout<<"YES"<<endl; }
else if((s[1]==s[2] && s[1]==s[5])) { cout<<"YES"<<endl; }
else if((s[1]==s[3] && s[1]==s[4])) { cout<<"YES"<<endl; }
else if((s[1]==s[3] && s[1]==s[5])) { cout<<"YES"<<endl; }
else cout<<"NO"<<endl;
和
2.
string s[6];
for(int i=0;i<6;i++) cin>>s[i];
if(s[0]==s[2]||s[0]==s[3])
{
if((s[0]==s[4]||s[0]==s[5])) { cout<<"YES"<<endl; }
}
else if(s[1]==s[2]||s[1]==s[3])
{
if((s[1]==s[4]||s[1]==s[5])) cout<<"YES"<<endl;
}
else cout<<"NO"<<endl;
考虑这个场景
s[1]=s[2] and s[1]=s[4] and s[0]=s[2]//rest everything we don't care about
Code1将输出yes
。良好。现在考虑代码2
if(s[0]==s[2]||s[0]==s[3])//s[0]==s[2] so we enter here
{
if((s[0]==s[4]||s[0]==s[5])) //this condition is not true so `yes` is not printed
{ cout<<"YES"<<endl; }
}
else if(s[1]==s[2]||s[1]==s[3])//now we won't enter here as we already entered if
{
if((s[1]==s[4]||s[1]==s[5])) cout<<"YES"<<endl;
}
所以code2什么也不输出。
您在第二个中缺少一些条件
像这样:
if(s[0]==s[2] && s[1]==[5])
这将产生什么结果??
在每个if-else if
条件中,必须添加一个else
条件。
代码中:
if(s[0]==s[2]||s[0]==s[3])
{
if((s[0]==s[4]||s[0]==s[5]))
{
cout<<"YES"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
相关文章:
- Usages of std::move
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 具有变量Number of Arguments的std::函数的矢量
- Capacity of a deque
- Deprecation of _writeBarrier()
- constexpr begin of a std::array
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- C++ "error: invalid use of void expression"
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 赛通"Cannot take address of memoryview slice"
- C++ Version Of Double.longBitsToDouble
- 收到错误"invalid use of non-static data member 'stu::n' "
- C++ Usage of AsyncCallback
- 错误:"Left of getValue must have class/struct/union"
- Centos7 g++ "to_string is not in a member of std"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 传递 std::vector of std::shared_ptr,而不是更新对象
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- ORing of statements