switch 语句 case 后面千万别忘了break (C语言)

您所在的位置:网站首页 c语言中switch语句不加break switch 语句 case 后面千万别忘了break (C语言)

switch 语句 case 后面千万别忘了break (C语言)

2024-06-23 07:14| 来源: 网络整理| 查看: 265

/* Program to evaluate simple expression of the form * value operator value */ #include int main(void) { float value1, value2; char operator; printf("Type in your expression .\n"); scanf("%f %c %f", &value1, &operator, &value2); switch(operator) { case '+': printf("%.2f\n", value1 + value2); break; case '-': printf("%.2f\n", value1 - value2); break; case '/': if (value2 == 0) printf("Division by zero .\n"); else printf("%.2f\n", value1 /value2); break; default: printf("Unknown operator.\n"); break; } return 0; }

预期的程序行为是这样的:

如果程序少了break:

#include #include int main(void) { float value1, value2; char operator; printf("Type in your expression .\n"); scanf("%f %c %f", &value1, &operator, &value2); __asm int 3; switch (operator) { case '+': printf("%.2f\n", value1 + value2); case '-': printf("%.2f\n", value1 - value2); break; case '/': if (value2 == 0) printf("Division by zero .\n"); else printf("%.2f\n", value1 / value2); break; default: printf("Unknown operator.\n"); break; } system("pause"); return 0; }

那么break 之前的代码都会跑到。

原因就是:

case 仅仅只是一个标签(label).

书上是这样说的:C Programming Language, 2nd Edition 2nd Edition by Brian W. Kernighan (Author), Dennis M. Ritchie (Author)

 

在switch 里面break 语言会导致一个immediate (迅速)的退出, 因为case 的作用相当于一个label, 当case 后面的代码跑完之后, 执行语言会继续往下走,除非遇到显式的动作去跳出来。 break 和return 是最常用的方式离开switch.  在while, for, do 循环里面, break 也经常用来立即退出。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3