2836|13

327

帖子

1

TA的资源

纯净的硅(初级)

楼主
 

有人见过C语言的这种用法吗 [复制链接]

 

if(表达式)语句1,语句2,语句3;经过微软VS验证运行结果等效于if(表达式){语句1;语句2;语句3;}。我是在看别人写的代码时发现的这种用法,一开始看到它我是崩溃的,一度怀疑这些年我是不是学的假C语言。因为我记得C语言语法里面明确说过语句只能用 ';' 号结束,除此之外的任何符号作为语句的结束符都是不被允许的。但是偏偏就有人能反其道而行之还能使编译通过不报错且无警告,难道这个人是造物主或是开了挂的存在???

冷静下来一想其实C语言里面有一个叫逗号运算符的东东,一直都觉得这个知识点不重要或者用不上所以都直接跳过了,万万没想到今天终于付出了不算惨痛的代价,所以说我的感觉还是很准的不重要的他永远都不重要关键时候要不了你的命

此帖出自单片机论坛

最新回复

这不是很正常吗  详情 回复 发表于 2021-8-23 22:15
点赞 关注
个人签名模电临时工
 

回复
举报

1798

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 

我自己的话是会避免使用一些冷门的语法,比如逗号运算符,条件运算符等,这几个完全有等效且更通俗易懂的写法

此帖出自单片机论坛

点评

条件运算符应该属于C语言最基础的语法应该所有编译器都是支持的,用习惯了还是很好用的逻辑关系也是很清晰的。反正我在很多常用编译器都用过感觉非常好。  详情 回复 发表于 2020-11-4 08:21
 
 

回复

1942

帖子

3

TA的资源

版主

板凳
 

这种算法尽量少用,为啥呢,因为不同编译器得到的结果或许会不同哦!

此帖出自单片机论坛
 
 
 

回复

1万

帖子

24

TA的资源

版主

4
 

楼上说的在理,如果靠编程技巧这样是可以,做工程应用就尽量避免这样的用法吧。

此帖出自单片机论坛
 
 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

5
 
本帖最后由 shipeng 于 2020-11-3 08:40 编辑

其实我还是有点提倡这种用法的,这样可以有效减少 '{','}'的使用,按照一对花括号占用2行的写法(我习惯就是这么写的)if语句一多这种写法可以节省不少行,这样可以在检查代码的时候尽量减少翻页,代码可读性更好逻辑更清晰,减少看了后面忘了前面的情况发生。当然你可能会说可以用花括号折叠这个功能,但不是每个IDE都有这个功能且折叠后你就看不到花括号里面的内容了这样你就需要反复的折叠打开操作了。

此帖出自单片机论坛

点评

这种想法通常仅是初学者的错误想法,编码规范相关的内容多了解以下  详情 回复 发表于 2020-11-3 08:59
 
个人签名模电临时工
 
 

回复

6040

帖子

196

TA的资源

版主

6
 

c标准的东西,不存在可移植性问题。

存在的问题是可读性问题,逗号表达式写成简短的一行更好理解,如果过于复杂,还是建议拆分成多条语句。

此帖出自单片机论坛
 
 
 

回复

6040

帖子

196

TA的资源

版主

7
 
shipeng 发表于 2020-11-3 08:38 其实我还是有点提倡这种用法的,这样可以有效减少 '{','}'的使用,按照一对花括号占用2行 ...

这种想法通常仅是初学者的错误想法,编码规范相关的内容多了解以下

此帖出自单片机论坛
 
 
 

回复

6105

帖子

4

TA的资源

版主

8
 
本帖最后由 damiaa 于 2020-11-3 15:38 编辑

逗号运算符   for循环里面就是用的逗号运算符  申明变量也经常用  uint8_t  i, j, k, val=0;

此帖出自单片机论坛
 
 
 

回复

327

帖子

1

TA的资源

纯净的硅(初级)

9
 
sint27 发表于 2020-11-2 17:14 我自己的话是会避免使用一些冷门的语法,比如逗号运算符,条件运算符等,这几个完全有等效且更通俗易懂的写 ...

条件运算符应该属于C语言最基础的语法应该所有编译器都是支持的,用习惯了还是很好用的逻辑关系也是很清晰的。反正我在很多常用编译器都用过感觉非常好。

此帖出自单片机论坛

点评

并没有说是因为编译器不支持,是因为没办法做到第一眼看上去就理解什么含义。我理解的可读性,跟通用性有关,在不考虑性能情况下通俗易懂才是最好的。另外我并不认为行数是影响可读性的,至少对齐和排列规范比这个重  详情 回复 发表于 2020-11-4 08:31
 
个人签名模电临时工
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

10
 
shipeng 发表于 2020-11-4 08:21 条件运算符应该属于C语言最基础的语法应该所有编译器都是支持的,用习惯了还是很好用的逻辑关系也是很清 ...

并没有说是因为编译器不支持,是因为没办法做到第一眼看上去就理解什么含义。我理解的可读性,跟通用性有关,在不考虑性能情况下通俗易懂才是最好的。另外我并不认为行数是影响可读性的,至少对齐和排列规范比这个重要多了。

此帖出自单片机论坛
 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

11
 

逗号表达式。放在这里不仔细看确实容易产生误解

此帖出自单片机论坛
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

52

帖子

0

TA的资源

一粒金砂(中级)

12
 

逗号运算符,条件运算符等,完全有等效且更通俗易懂的写法

此帖出自单片机论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

13
 

通用的一般是;极个别的是。实际上争论这个无意义,只要能用,并且能看懂就可以。

此帖出自单片机论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 

这不是很正常吗

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表