逗号表达式:是C语言中的逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,①从左往右逐个计算表达式,②整个表达式的值为最后一个表达式的值。
成都创新互联公司网络公司拥有十余年的成都网站开发建设经验,上千客户的共同信赖。提供成都网站建设、成都网站制作、网站开发、网站定制、友情链接、建网站、网站搭建、自适应网站建设、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务——百度百科
如果令x的初始值为1的话,++x与x++最终结果都是2,但在其过程中会有较大差异。(--x与x++同理)
在过程中:
++x是2(x位于++后是加完之后),过程中是2。
x++是1(x位于++前是加完之前),过程中是1。
我是这么记忆的,一下子就很有印象,但只有到真正去到题中实践理论,就会豁然开朗。
辨析一:#includeint main()
{
int x=1,y=1,z=1;
z=x++,y++,++y;
printf("%d%d%d",x,y,z);
return 0;
}
大家首先看一下,z的最终结果是什么呢?
对于刚接触逗号表达式的同学来说,小编当时依据上面的①②两点,流程大概如下
在z=x++,y++,++y;z等于整个逗号表达式最后的值吗!在这个过程中y的结果是2,那z也是2咯,
最后x=2,y=3,z=2。简简单单咯~但这是错的,实际输入,得出的结果如下
吃了个大惊,怎么z等于1呢,追回源头,在哪出现过1呢!原来在流程1中x的过程结果是1,嗯?z不是等于逗号表达式最后的值吗!?
其实此处是优先级还没明白!在z=x++,y++,++y;中z=x++含有赋值运算符,其优先级要高于逗号运算符。逗号运算符的优先级是最小。此处相当于(z=x++),y++,++y;
如果要实现我们所想要的结果则只需变成z=(x++,y++,++y);
代码如下,结果如下
辨析二:#includeint main()
{
int z=1;
printf("%d\n",(z+=1,z+5,z++));
//printf("%d",z);
return 0;
}
大家还是看一下,z的最终结果是什么呢?
大家看一下下面流程思路正确吗?
理论实践
吃惊+1,怎么跟我预想的相差5呢!
此处的z+5,并没有什么实际意义,并不是z+=5!其它的就是大致相同了。
那小伙伴知道z最后的结果吗?
#includeint main()
{
int z=1;
printf("%d\t",(z+=1,z+5,z++));
printf("%d",z);
return 0;
}
赶快理论实践吧!
希望对你有帮助,语言学习贵在坚持输入和输出!
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款