C语言里case后面的语句不加大括号为什么有时候能编译通过,有时候不能?

C语言里使用case要注意的问题

  1. 一般情况要加上break;
  2. case后面必须为整型数字或者字符类型;

对问题解答:

case后面的语句不需要加大括号,只要别忘了break就行。不过有的编程规范上会建议用大括号把case后面的语句括起来。
你说的“不能通过编译”,可能是下面这个原因。C/C++里规定,不能在case语句里定义局部变量。例如:

int a = 2;
    switch (a)
    {
    case 1:
        int c = 10;
        break;
    case 2:
        break;
    default:
        break;
    }

编译就会出错,原因是在case 1里定义了局部变量c。
而C/C++还有一个很有意思的规定,用{}包括的语句,认为是一个”语句块“,而在语句块里就能想干什么就干什么。
比如:

switch (a)
    {
    case 1:
        {
        int c = 10;
        break;
        }
    case 2:
        break;
    default:
        break;
    }

这样就能通过编译了。

猜你喜欢

转载自blog.csdn.net/yexudengzhidao/article/details/79694114