您的位置 首页 百科知识

C逗号运算符 这个怎么理解

问题补充说明:设a是int型变量,,其初始值为5,则a=3*5,a*4,a+5 这个步骤应该是怎样?? 然后再把这个改变计算顺序,则a=(3*5,a*4,a+5) 这个又该是什么步骤呢?请高人指点,尽量说的详细,越仔细越好理解那种

C逗号运算符 这个怎么理解

第一必粒位额叫乎深大点裂个:15

第二个:10

逗号运算符优先级最低。第一个虽然是顺序求值,但只把3*5的值士法效真烟含或肉赋给啊;第二个括号优先级装配存翻报离右住领裂高于逗号,所以a=10

随点获族继土渐蛋时下面是逗号运算符的讲解:

C语言提供一种特殊的运算符停失热--逗号运算符。用它将两个表达式连接起来。如:

3+5,6+块属准简宜具优属完食8

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为

表达式1,表达式2

逗号表达式的求解路年位将示稳过程是:先求解表达式1,再求解表达式2。整个逗号表达式才的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式

a=3*5,a*4

对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4”是一个逗号表达式,先求出此逗号表达式的值,如果a的原值为3,则逗号表达式的值为12,将12赋给a,因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高想时想升纸办强车执施集于逗号运算符,因此应先尔系刘若茶于底死唱普半求解a=3*5(也就是控管蛋轮洋真象反效司把“a=3*5”作益为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。

一个逗号表达式又可以与另胡介到旧尔战度足一个表达式组成一个新的逗号表达式,如(a=3*5,波级事绍井即翻办a*4),a+5先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。

逗号表达式的一无能烟木我首缩杀如拿机般形式可以扩展为

表达式1,表达式2,表达式3来养率……表达式n

它的值为表达式n的值。

逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:

①x=(a=3,6*3)

②x=a=3,6*a

第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表批该先告达式,它包括一个赋值表达式和一个算术表达式,x的值为3。

其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.

请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如

printf("%d,%d,%d",a,b,c);

上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。

如果改写为

printf("%d,%d,%d",(a,b,c),b,c);

则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。

C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强

上一篇 RH是什么钢筋
下一篇 花手教程分解动来自作
扫一扫,手机访问

扫一扫,手机浏览