逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。
逗号运算符的概念是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
由于逗号运算符的优先级最低,在“表达式1,表达式2,...,表达式n,”中,逗号表达式的结果为最后一个表达式的值,即表达式n的值。
如果语句为a=a+b,a-b;则先运算a=a+b,再运算a-b,而整个逗号表达式的值为5,即a-b的值,最后结果为a=11,b=6。
如果语句为a=(a+b,a-b);则先运算a+b,结果无意义,再运算a-b,结果赋值作为逗号表达式的结果赋值给a,最后结果为a=-1,b=6。
3
逗号运算符
在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。
假设b=2,c=7,d=5,
a1=(++b,c--,d+3);
a2=++b,c--,d+3;
对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。
对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高)所以最终表达式的值虽然也为8,但a2=3。
注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。
例子:int a[2],x=2,y=5;
a[0]=(x+3,y++,x++);那么最终结果是:a[0]=2 x=3 y=6;
为何a[0]=2:因为(x++)是运算之后再自加
a[1]=(x++,x+3,x+7);那么最终结果是:a[1]=11 ,x=4
第一反应,我以为a[1]=10,就是3+7;其实是错的,逗号运算是从左至右,所以先算
x++,x从而变成4了,然后a[1]=4+7=11;
不信你改成a[1]=x++,x+3,x+7;调试一下,结果是7,就是4+3,说明经过一个逗号,x已经自加变成4了。
大部分编译器中函数的参数计算顺序是从右到左,因此计算顺序是:3*i=9
i=3*i=9
"%d
"="9
"
所以一般的输出结果是:9
一个格式符对应一个参数,因此输出的是i=3*i的值9
希望回答对你有帮助。
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有