<>案例一:
#include "stdio.h" void main() { int x,y,z; x=1,y=1; z=x++,y++,++y; //逗号表达式
printf("%d,%d,%d\n",x,y,z); }
你觉得这个z值是多少呢?
分析:这个x++, y++, ++y 这是个逗号表达式,运算顺序自左至右,那有人要说了,简单,z = 2,
那我可要告诉你:错误;为啥错了?因为本例中z=x++含有赋值运算符,其优先级高于逗号逗号运算符,也即相当于这样 (z=x++),y++,++y;
运行结果:

解析:首先执行(z=x++) => z=1, x=2
然后继续执行y++, ++y => y=3
**此时若再次变化成这样:** z= (x++,y++,++y); //此时逗号表达式整体加了括号 printf("%d,%d,%d\n",x,y,z);
此时运行结果:

<>案例二:
void main() { int t; printf("t=%d\n",(t=1,t+5,t++)); }
自己分析一把,答案是1!
有人说,我认为是6,自左至右计算后的t是6!
是吗? => 错误;
原因:逗号表达式中的t+5并不会影响t的值啊!
经过t=1,t+5后t的值仍然是1,经历t++时,注意此时是先赋值,然后再自增,所以逗号表达式的值是1;
运行结果:
**

<>案例三:

**
void main(){ int a,b; b=(a=1,a+1,a++); printf("b= %d\n",b); }
和案例二差不多,自己分析一把,在评论区可写下自己的解题过程,答案是1。

<>最后总结一下:

1. 逗号表达式结构:
表达式1,表达式2,表达式3,… ,表达式n
2. 逗号表达式的要领:
(1) 逗号表达式的运算过程为:【从左往右】逐个计算表达式。
(2) 逗号表达式作为一个整体,【它的值】为最后一个表达式(也即表达式n)的值。
(3) 逗号运算符的优先级别在所有运算符中最低。
(4)往往将逗号表达式与赋值运算符结合起来考查!

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信