如果数字不在两个值之间,为什么它会显示总和?

Why does it display the sum if numbers aren't between the 2 values?

我希望它在数字小于或等于 1 或 1000 时不显示总和结果。我不知道使用 if 是否是最好的方法,但这就是我尝试过的方法使用,我真的不明白为什么它不起作用。我也试过用 ||&& 写条件,但这些也不起作用。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
    
int sum;
int a, b, c;

int main() {
     
    cin >> a;
    cin >> b;
    cin >> c;
    
    sum = a + b + c;
        
    if ( 1 <= a, b, c <= 1000) {  //also tried ( 1 <= a || b || c <= 100) and ( a, b, c >= 1 && a, b, c <= 1000)
        cout<< sum;
    }
    else {
        cout<< "can't calculate"; 
    }
    
    return 0;
}

你可能想要这个:

if ( a >= 1 && b >= 1 && c >= 1 &&
     a <= 1000 && b <= 1000 && c <= 1000 )
{
    std::cout << a + b + c;
}

您的代码不正确。您必须使用正确的语法。

注:Why is "using namespace std;" considered bad practice?

这个if语句中的表达式

if ( 1 <= a, b, c <= 1000)

是带逗号运算符的表达式。相当于

if ( ( 1 <= a ), ( b ), ( c <= 1000 ) )

表达式的值是其最后一个操作数的值。也就是说这个if语句等价于

if ( ( c <= 1000 ) )

你的意思好像是

if ( 1 <= a && a <= 1000 && 1 <= b && b <= 1000 && 1 <= c && c <= 1000 )
{
    std::cout << a + b + c << '\n';
}

注意计算和没有意义

sum = a + b + c;

检查if语句中变量a、b、c的值之前

  1. 为什么你有这么多的包含? 您的代码只需要 iostream。其他任何内容都可以删除。
  2. 您的 if 条件语法不正确。你不能写“a 和 b 和 c 应该在 1000 以下”,你必须为每个变量都这样做。尝试:
a >= 1 && a <= 1000 &&
b >= 1 && b <= 1000 &&
c >= 1 && c <= 1000