2013-11-16 2 views
6

можно написать C переключатель заявление с непостоянным соединением к югу заявление:Оператор сложения C с несобственным заявлением используется для использования?

int x = 2; 
int y = 3; 

int main() 
{ 
    switch (x) 
     y++; // ok 

    switch (x) 
     case 2: y++; // ok 
} 

есть ли случай использования для этого? То есть, есть ли когда-либо причина использовать не-составную подзапись оператора switch?

+1

просто спрашивает, что представляет собой неконсолидированный подзаголовок? –

+0

Оператор switch содержит один оператор: 'switch (expr) statement'. Это одно утверждение является подзапросом. Составной оператор представляет собой выражение, окруженное фигурными скобками и содержащее последовательность операторов: '{f(); г(); час(); } '. Обычно переключатель используется с составной подзаголовкой. Я спрашиваю, есть ли когда-либо использование там, где оно используется с не-составной подзапросом в соответствии с моим примером. –

ответ

1

Первый блок блокировки в коде ничего не делает.

Когда выражение оператора switch оценивается, исходный код, присутствующий до появления совпадающей метки ярлыка или метки по умолчанию, будет проигнорирован. Следовательно, в приведенной ниже программе не печатается оператор «Перед случаем».

int x = 2; 
int y = 3; 

    int main() 
    { 
     switch (x) 
     { 
      y++; 
      printf("Before case"); 
     case 2: 
      printf("In case 2"); 
      break; 
     } 

     return 0; 
    } 

Выход:.

In case 2 
+0

Ваши утверждения верны, но не отвечают на вопрос. –

1

«Управление переходит к утверждению которого case постоянного выражения соответствует значению switch (выражение) [...] Исполнение из тела оператора начинается в выбранном заявлении и продолжается до конца корпуса или до тех пор, пока инструкция break не выведет управление из корпуса ». (http://msdn.microsoft.com/)

Не думаю, что первые switch ничего не делает ... Когда я скомпилировал его, y был 4, что означает, что он только увеличил его один раз.

+0

Правильно, первый 'y ++' не выполняется, но это не отвечает на вопрос. –

Смежные вопросы