在IF语句中检查多个OR运算符

3 c++ if-statement conditional-statements

我有以下C++代码:

if(x==y||m==n){
cout<<"Your message"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

如果x等于y或m等于n,程序将打印"您的消息".但如果两个条件都成立,程序只测试其中一个并最终输出一个"你的消息".

有没有办法"Your message"使用单个if语句根据每个条件独立打印每个?

使用多个if语句,输出将与下面的输出相同.

if(x==y){
cout<<"Your message"<<endl;
}

if (m==n){
cout<<"Your message"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*obᵩ 10

不是说我曾经这样做过,但......

for(int i = 0; i < (x==y)+(m==n); ++i) {
  std::cout << "Your message\n";
}
Run Code Online (Sandbox Code Playgroud)


让我对此进行扩展.我永远不会这样做,因为它违反了两个原则:

1)可维护性代码.这个循环将导致维护者停止,思考并尝试恢复您的原始意图.一对if陈述不会.

2)不同的输入应产生不同的输出.这个原则使用户和程序员受益.没有什么比运行测试,获得有效输出更令人沮丧,并且仍然不知道程序采用了哪条路径.

鉴于这两个原则,以下是我实际编写代码的方法:

if(x==y) {
  std::cout << "Your x-y message\n";
}
if(m==n) {
  std::cout << "Your m-n message\n";
}
Run Code Online (Sandbox Code Playgroud)

旁白:永远不要用endl你的意思\n.它们生成语义相同的代码,但endl可能会意外地使您的程序变慢.