C语言里这个表达式什么意思? a=(c,d,e)

如题所述

这个是考察逗号表达式,

逗号表达式的值就是最右边的e的值

所以

a=(c,d,e)

相当于

a=e;

验证:

#include<stdio.h>
int main(){
int a, c=1, d=2, e=3;
a=(c,d,e);
printf("a=(c,d,e)=%d", a);
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-26
这个是复合的三目运算
例如x=a<b?c:d的意思就是如果a小于b,x就等于c,否则x=d
a<b?b:(c<d?d:e)
这样就明白了
如果a<b,那么表达式的值就是b,如果a不小于b,那么表达式的值就是(c<d?d:e)的值
c<d?d:e这个表达式中如果c<d那么表达式值就是d,否则就是e,
第2个回答  2016-06-26
需要首先明确1.)赋值操作符的优先级比“+”更低。2.)赋值操作符的返回值是赋值后的左操作数的值。3.)常量和表达式不能作为左值,不能作为左操作数(即不能放在二元运算符的左边)。以上3点判断如下:A:可以分割为两个连续的赋值操作,连续赋值操作从右至左执行,第一个执行赋值操作左边为(9+e+f)是表达式,错误。编译器应该报错。可以修改为d=9+e+(f=d+9)。B:正确。C:d+9是要干什么?也没有赋值。语法错误。D:同A建议写出来编译一下。映像会深刻些。某些教材是比较简略的,建议查查C++primer之类的书籍。
相似回答