作业帮 > 综合 > 作业

c语言中关于逗号运算符的疑问!

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/10/03 12:25:40
c语言中关于逗号运算符的疑问!
如果逗号两边的都不是赋值语句,如:
printf( ”%d\n ” ,z=(x%y,x/y)) ;
若x,y为10和3,那要怎么确定z?
还有不加括号的情况,如:
a=0;b=0;c=0;
c=(a-=a-5),(a=b,b+3) 此时如何确定c的值?
c语言中关于逗号运算符的疑问!
逗号表达式,按从左到又的顺序依次计算的,把最后一个表达式的值做为逗号表达式的值
所以
printf( ”%d\n ” ,z=(x%y,x/y)) ;

中,z的值就是x/y的值即10/3=3;
a=0;b=0;c=0;
c=(a-=a-5),(a=b,b+3)
而在这c=(a-=a-5)这是一个赋值表达式,作为这个逗号表达式的第一个表达式,而a-=a-5,等价于a=a-(a-5)=0-(0-5)=5
所以c=5
再问: 那逗号后面这个(a=b,b+3)有什么意义?
再答: 具体意图不知道,那就要看写代码的人有什么意图了 (a=b,b+3) 在这句中,a=b,a重新赋值,而b是0,则a变成0,b+3就看不出意义了