相关疑难解决方法(0)

C代码中的switch-case中的"..."是什么

这是一段代码/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编程语言"没有提到它?

c gcc gcc-extensions

49
推荐指数
4
解决办法
3268
查看次数

Elipses是否为case语句标准C/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 c++

13
推荐指数
2
解决办法
3332
查看次数

切换案例的这种语法在C中意味着什么?

我看到了一些像这样的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:是什么意思?它是标准的吗?

c switch-statement

6
推荐指数
1
解决办法
646
查看次数

标签 统计

c ×3

c++ ×1

gcc ×1

gcc-extensions ×1

switch-statement ×1