龙空技术网

既然可以将多条C语言语句写到一行,那么这样做是否能提升效率?

IT刘小虎 570

前言:

如今我们对“c语言输出逗号隔开的数据”大体比较注重,姐妹们都需要学习一些“c语言输出逗号隔开的数据”的相关知识。那么小编在网络上收集了一些关于“c语言输出逗号隔开的数据””的相关知识,希望兄弟们能喜欢,你们快快来学习一下吧!

昨天,群里有小伙伴说他老师布置了作业,要求编写一个C语言函数,并在 main() 函数调用,输出以下内容:

asdasdasdasdasdasdHello world

完成C语言作业

于是小伙伴编写了他的C语言程序,但是编译并执行后,发现输出并不符合预期。于是,他将他编写的C语言代码发到群里,是下面这样的:

#include <stdio.h>void letter(void){ printf("asd");}int main(){ letter(), letter(), letter(); letter(), letter(); letter(); printf("hello world!"); return 0;}

小伙伴写的C语言代码

这并不是多难的问题,所以群里其他小伙伴很快就指出了问题所在,并给出了完成作业的参考思路。

C语言语句使用逗号隔开合法吗?

不过,这段C语言代码倒是引起了一点小小的讨论,讨论的焦点主要集中在这两行C语言代码的写法:

letter(), letter(), letter();letter(), letter();

有小伙伴认为这两行代码不符合C语言语法,所以编译阶段就会报错。其实不是的,虽然这种写法并不是特别常见,但却是合法的,它与下面这种写法是相似的:

int a=0, b=1, c=2;

编译小伙伴的C语言代码,是可以成功的

在C语言程序开发中,定义相同类型的变量时,为了简便,可以将多个变量写到同一行,并且对其赋值。事实上,我们编译小伙伴的C语言代码,是可以成功的,请看:

# gcc t.c # ./a.out asdasdasdasdasdasdhello world!#

可见,C语言是允许将多条语句用逗号隔开,写到同一行的。

将多条C语言语句写到一行,可以提升效率?

我们都知道,C语言程序是顺序执行的,也即按照代码顺序,“一行一行”地往下执行。既然如此,将 3 条语句写到同一行,是不是可以提升 3 倍效率呢?

将 3 条C语言语句写到同一行,是不是可以提升 3 倍效率呢?

乍一看,C语言程序每次执行“一行”,现在将本来的“三行”写成“一行”,也就是一次可以执行 3 条C语言语句了,看起来的确提升了效率。这种说法到底对不对呢?

其实不是的,C语言执行“一行”不同的语句,开销并不是始终相同的。其实仔细想想也应该能够明白,如果将多条C语言语句写到一行可以提升效率,那C语言代码何必还分行呢?干脆所有代码都写到一行就好了。

实际上,一行C语言代码可能会生成多条指令的,要搞清楚这一点,最好的办法就是查看汇编代码,我们输入 objdump 命令查看小伙伴的C语言代码对应的汇编代码:

# objdump -dS a.out

小伙伴的C语言代码对应的汇编代码

从汇编代码可以看出,其实将 3 条 letter() 语句写到一行,和将 3 条 letter() 语句写到三行是等价的,并不会有效率差异。

小结

可见,将多条C语言语句写到一行并没有什么特殊的,不会非法,也不会带来效率差异。如果一定要说这么做有什么坏处,也许让代码调试起来有些麻烦算一个。当然了,本文的分析只属于抛砖引玉(gcc version 4.8.4),学习C语言应该有随时动手动脑的能力。

点个赞再走吧

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

(此处已添加圈子卡片,请到今日头条客户端查看)

标签: #c语言输出逗号隔开的数据