C语言逗号运算符和逗号表达式基础总结

逗号运算符的作用:

1,起分隔符的作用:

定义变量用于分隔变量:int a,b
输入或输出时用于分隔输出表列 printf("%d%d",a,b)

2,用于逗号表达式的顺序运算符

语法:表达式1,表达式2,...,表达式n
表达式的值:表达式n的值
优先级:最低
运算顺序:左->右

例题总结

错题1

  if(a>b, a>c)     max=a;
    else                max=0;
    t=(a=a+3,a/b,b+1,++c);

printf() 输出 max 和 t 的值
max=3, t=2
解析:因为if语句中是一个逗号表达式,所以先计算a>b,结果为0,需要注意到这里的逗号是运算符而不是分隔符,然后再计算a>c,结果为1。进入条件中,把a的值3赋值给max;然后计算t的值,需要注意到这里的逗号是运算符而不是分隔符a+3赋值给a,a=6,然后a/b得到1,然后b的值为4,++c先自增然后赋值,结果为2。

 

错题2

计算下面逗号表达式的值:

(a=2*4,a*5),a-3

在这个逗号表达式中,先计算括号内的值,从左到右,a被赋值为8,然后a*5是这个含括号的逗号表达式的值,然后在计算括号外的a-3,a-3等于5,所以说这个式子的结果为5.
注意分清一般表达式和赋值表达式。

错题3

这两个题目都是自增运算符与自减运算符和逗号运算符结合的题目,在测试中错了两道,
以i++为例:自增运算符的具体含义是:

1. 先进行i与其他运算符的运算

2.再执行i=i+1

答案:D
解析:里面含有顺序运算符,首先计算a=3,然后b=a--,a的值先赋值给b,表达式的值为b,也就是x=b,然后a自减为2,所以x,a,b的值分别为3,2,3

答案:C
解析:先进行赋值 x=0 ,然后x+10,接着是x++,x先进行其他操作,也就是逗号运算符,然后再进行自增,所以结果为x=0.0





猜你喜欢

转载自www.cnblogs.com/FBsharl/p/10009325.html