打印

C语言中关于逗号运算符的理解

[复制链接]
1084|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CDFS123|  楼主 | 2019-2-28 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在C语言中运算符有很多,包括算数运算符、关系运算符、赋值运算符、位运算符、逻辑运算符、三目运算符、sizeof运算符、逗号运算符等等,那今天我们就重点来给大家讨论一下关于逗号运算符的一些运算规则。

首先逗号运算符是非常简单的,对于初学者来说,只要在相应的IDE环境中进行测试便可以得到想要的结果;但是对于逗号运算符存在很多变种的题目,在一些笔试面试题中经常会见到,但是在真正的实际开发用的却不是很多,既然有网友问道这样的题目,那今天我就简单的给大家解释一下,什么是逗号运算符?

逗号运算符是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

举个例子:

int a1,a2,b=2,c=7,d=5; // 第1行

a1=(++b,c--,d+3); // 第2行

a2=++b,c--,d+3; //第3行

对于给a1赋值的代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是(d+3)的值,为8,所以a1的值为8。

对于给a2赋值的代码,也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)虽然最终表达式的值虽然也为8,但b=4(第2行代码运算完时,b=3,即第3行代码运行时,b的值为4),所以a2=4

再来一个关于结合性的例子:

int i=24;

int n = (i++,i++,i++,i++); // n == 27

因为逗号运算符的结合性是自左向右,所以四个i++会依次运行,但是最后一个i++在赋值之后才进行运算,所以最终返回27。

关于逗号运算符就是这么简单,你学会了吗?
评论
dirtwillfly 2019-2-28 21:30 回复TA
感谢分享 

相关帖子

沙发
你瞅啥| | 2019-2-28 23:21 | 只看该作者
茴香豆的茴字有六种写法。

使用特权

评论回复
板凳
kingkits| | 2019-3-4 10:56 | 只看该作者
本帖最后由 kingkits 于 2019-3-4 11:58 编辑

这个会与不会都不影响一个人的编程水平

使用特权

评论回复
地板
chunk| | 2019-3-6 15:36 | 只看该作者
我习惯于用编译器把C语言编译成汇编语言看一下。

使用特权

评论回复
5
airwill| | 2019-3-7 22:00 | 只看该作者
这么玩, 有点过火吧, 会歧义.
个人感觉不赞成这样玩

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

0

粉丝