我想的是这样的:

range = range <= '9' && range >= '0';

我想从字符串中提取一个连续的数字序列。一旦程序在找到数字序列后找到一个非数字,我希望它在第二个if语句(第59行)中使用break;跳出循环。我想如果我能用一个变量来写条件会容易得多。
我想在第59行说的是“如果vardigit_flag是真的,并且数组s中的元素包含在varrange中(这是一个数字范围),那么break;
能做到吗?
如果不行,为什么不行?
int i = 0;
int size_of_s = 0;
int digit_flag = FALSE;
while (s[i] != '\0') {
    if (s[i] == ' ') {
        i++;
    } else if (s[i] <= '9' && s[i] >= '0') {
        size_of_s++;
        i++;
        digit_flag = TRUE;
    }

    if (digit_flag == TRUE && s[i] != range) {
        break;
    }
}

最佳答案

我想在第59行说的是“如果var digit_标志为TRUE,数组s中的元素包含在var范围(这是一个数字范围)中,那么break
能做到吗?
据我所知,这在C中是做不到的。
如果不行,为什么不行?
因为C语言中没有关系运算符或比较运算符,这意味着“操作数1在操作数2的范围内”(即使第二个操作数是数组)。您需要使用两个条件(>=a,如果不想使用标准函数(如isdigit(),它将使用0-9范围),可以使用宏

#define IS_IN_RANGE(x, min, max) (x >= min && x <= max)

或内联函数。
static inline int is_in_range(int x, int min, int max) {
    return (x >= min && x <= max);
}

关于c - 我们可以在C中将变量设置为数字范围吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51681981/

10-11 22:51
查看更多