这是由Dennis Ritchie在1972年进行的第一个C编译器工作期间编写的示例。 我刚刚链接到的页面底部的c02.c模块包括

easystmt()

{

extern peeksym, peekc, cval;

if((peeksym=symbol())==20) /* name */

return(peekc!=':'); /* not label */

if (peeksym==19) { /* keyword */

switch(cval)

case 10: /* goto */

case 11: /* return */

case 17: /* break */

case 18: /* continue */

return(1);

return(0);

}

return(peeksym!=2); /* { */

}

通过阅读1972年的代码,很明显,丹尼斯非常喜欢switch语句-他经常使用它们。 鉴于几乎所有内容都被编码为int,部分原因是缺乏其他数据类型的可能性,所以这并不奇怪。 在那个阶段,他的编译器实现不使用任何结构,因为他只是在将结构添加到语言中。 动态分配,vtable和多态性还有很长的路要走。 我已经尝试并没有找到关于它的参考,但是如果我没记错的话,Dennis是“发明”了switch语句,或者至少是提出了导致他们采用C语言形式的想法,并认为这是他对该语言的最好或最引以为傲的补充。

省略花括号的能力使switch语句在形式上类似于if、for、do和while语句,有助于简化和统一语法。 请参阅C语法中的选择语句和迭代语句产生式(例如,在Kernighan和Ritchie的附录A13中,我的副本中的第236-237页),其中定义了这些内容。

显然,总可以添加括号,但是对于像这样的简单示例而言,这似乎很沉重。 该示例可以编码为析取if语句,但我认为Dennis切换的想法之一是,显然会为编译器提供基于所涉及的特定常量优化分支逻辑实现的机会。

c语言for可以不用花括号吗,c-使用不带花括号的switch语句是否有用?相关推荐

  1. C语言编写程序计算运费:f=p*w*s*(1-d)。(用switch语句实现)

    C语言编写程序计算运费:f=pws*(1-d).(用switch语句实现) s<250km 没有折扣 250<=s<500 2%折扣 500<=s<1000 5%折扣 1 ...

  2. c语言switch语句支持的字符有哪些,C语言中switch()语句的括号内可以是什么型别的呢?...

    C语言中switch()语句的括号内可以是什么型别的呢?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言中swit ...

  3. c语言switch不允许实型,C语言中switch语句什么意思

    Switch在C语言中是保留字,其作用是进行判断选择.switch(开关语句)常和case break default一起使用. Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断 ...

  4. c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...

    c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...

  5. python中小括号和中括号的区别_Python3中小括号()、中括号[]、花括号{}的区别详解...

    介绍 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. 小括号() Python中的小括号(): 代 ...

  6. C 语言中的 switch 语句 case 后面是否需要加大括号

    事件原由为编辑器的自动缩进,当 case 换行后不自动缩进. 于是在在想可以可否在 case 后面再大括号,让其自动缩进. 查了资料,发现 case 是可以加大括号的,相当于代码块. 而且还有另外一个 ...

  7. 【C语言】如何不用中间变量交换变量的值

    [C语言]如何不用中间变量交换变量的值 思路分析 一般我们进行C语言中的变量交换时都是使用一个中间变量来进行求解,其实不适用中间变量也一样可以只需要使用下面的公司即可 m = m + n -n n = ...

  8. c语言括号匹配输出个数字,C程序括号匹配检查(带详细注释)

    编写一程序检查C源程序文件中{}.()等括号是否匹配,并输出第一个检测到的不匹配的括号及所对应括号所在的行号(程序中只有一个括号不匹配). 注意: 1.     除了括号可能不匹配外,输入的C源程序无 ...

  9. c语言 switch语句大小,C语言switch语句(板式整齐)

    <C语言switch语句(板式整齐)>由会员分享,可在线阅读,更多相关<C语言switch语句(板式整齐)(38页珍藏版)>请在人人文库网上搜索. 1.switch 语句,1, ...

最新文章

  1. 二十一. Python基础(21)--Python基础(21)
  2. 微信开发教程(4)——高级群发接口
  3. CentOS 6.3(x86_64)下安装Oracle 10g R2
  4. CMD命令行接收用户输入信息
  5. net clr via c sharp chap1-- note
  6. ArcGIS教程:Iso 聚类非监督分类
  7. linux从前往后读取文件夹图片名称,Linux目录和文件中的常用命令(三)
  8. cache相关命中率的运算_Linux cache命中率查看
  9. 《设计原本—计算机科学巨匠Frederick P. Brooks的反思》一一第 2 章 工程师怎样进行设计思维―理性模型 2.0...
  10. arcgis删除栅格数据波段_Web GIS课程7.2 栅格数据的概念及类型
  11. 【产品经理学习笔记】Part 7 收益预估
  12. 为什么 Go 语言能在中国这么火?
  13. Docker配置远程访问
  14. 如何把照片压缩到20k一下_如何将一寸照片压缩到20k以内?
  15. NYOJ127 星际之门(一)【定理】
  16. linux命令详解:tc
  17. E3--FPGA实现LVDS收发实例和原理2022-12-03
  18. 传统行业的互联网创业机会在哪里?
  19. 贪吃蛇c语言程序复杂,刚学C语言,想写一个贪吃蛇的代码
  20. 《阿里云服务器搭建》------ 安装MySql

热门文章

  1. 移动端适配单位vw和px的转换
  2. matlab程序循环,matlab循环程序只得到一个结果
  3. 高性能计算里程碑:新款IBM POWER8服务器通过NVLINK与Tesla P100互联
  4. 幼儿园计算机网络教室工作计划,2020年幼儿园电教工作计划
  5. sws_scale函数
  6. 闪耀暖暖总是显示服务器连接失败,闪耀暖暖服务器连接不上怎么办
  7. 我的一些视觉工具(1)之动作预测--逐行详解C3D代码(Pytorch)
  8. dma_alloc_coherent DMA内存申请学习笔记
  9. IDE中显示 *.properties 为中文
  10. 纯JS 实现 简易 Toast 消息提示框