有没有办法简化这个IF语句

有什么办法可以简化这个if说法吗?

if(num1 != 1 && num1 != 2 && num1 != 3 && num1 != 4 && num1 != 5 && num1 != 6 && num1 != 7 && num1 != 8 && num1 != 9 && num1 != 0){
    printf("Invalid Number");
    return 0;
}

的值num1将来自用户输入,我只想允许数字作为值,如果用户尝试输入数字以外的任何内容,我想Invalid Number被打印。

回答

似乎有效值num1是介于 0 和 9 之间的任何值。因此...

if ((num1 < 0) || (num1 > 9)) {
    printf("Invalid number");
    return 0;
}

根据您在下面的评论,我怀疑您真正想要做的是将用户的输入作为文本字符串读取,然后验证他输入的所有字符是否都是数字。strtol是一个合适的函数。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    
    long value = 0;
    char* endptr = NULL;
    bool input_is_valid = false;
    char inputline[20 + 1] = { 0 };

    printf("Enter a numbern");
    scanf("%20s", inputline);

    value = strtol(inputline, &endptr, 10);
    input_is_valid = (*endptr == '') && (value != LONG_MAX) && (value != LONG_MIN);

    if (!input_is_valid)
    {
        printf("Invalid inputn");
        return 0;
    }

    return 0;
}


以上是有没有办法简化这个IF语句的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>