这是一段代码/usr/src/linux-3.10.10-1-ARCH/include/linux/printk.h:
static inline int printk_get_level(const char *buffer)
{
if (buffer[0] == KERN_SOH_ASCII && buffer[1]) {
switch (buffer[1]) {
case '0' ... '7':
case 'd': /* KERN_DEFAULT */
return buffer[1];
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是一种运营商吗?为什么"C编程语言"没有提到它?
我正在浏览linux内核中的一些代码,我遇到了类似的语句 case '0' ... '9':
为了试试这个,我在下面创建了测试程序.
#include <iostream>
int main()
{
const int k = 15;
switch (k)
{
case 0 ... 10:
std::cout << "k is less than 10" << std::endl;
break;
case 11 ... 100:
std::cout << "k is between 11 and 100" << std::endl;
break;
default:
std::cout << "k greater than 100" << std::endl;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的程序确实编译了,虽然我之前从未遇到过case语句构造中的elipses.这个标准的C和C++还是这个语言的GNU特定扩展?
我看到了一些像这样的c代码:int check = 10:
switch(check) {
case 1...9: printf("It is 2 to 9");break;
case 10: printf("It is 10");break;
}
Run Code Online (Sandbox Code Playgroud)
这case 1...9:是什么意思?它是标准的吗?