我想的是这样的:
range = range <= '9' && range >= '0';
我想从字符串中提取一个连续的数字序列。一旦程序在找到数字序列后找到一个非数字,我希望它在第二个if语句(第59行)中使用
break;
跳出循环。我想如果我能用一个变量来写条件会容易得多。我想在第59行说的是“如果var
digit_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/