c语言新手求教几个问题: 1、a=a+7=c+b为什么语法错误?

2、若有一下程序段int c1=1,c2=2,c3;c3=1.0/c2*c1;执行后,c3的值是——A.0 B. 0.5 C. 1 D.2答案A 为什么3、已知char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c的数据类型是——答案是 float为什么4、已知int i,a;执行语句i=(a=2*3,a*5),a+6;后,变量i的值是——答案是30 是不是有个逗号表达式(我不明白逗号表达式求知道)不甚感激

你好!1、等号是赋值运算,这就意味着等号左边必须是被赋值的变量,显然a+7是表达式,而不是变量。
2、整形运算是只取整数部分的,你定义的c1,c2,c3均是整数,所以;c3=1.0/c2*c1;进行的是整形运算,那么只取整数部分就是0.
3、注意:在浮点型与整形等混合运算时,系统会将所有类型的数据转化成double型的来运算,然后把结果再根据需要赋给响应变量。
对于你的表达式,c是float的,所以最后结果是要被转化成float赋值给c。
4、逗号运算符,又称顺序求值运算符,但是要区分这个顺序,这里的顺序指的是表达式,逗号运算符使用形式是:表达式1,表达式2,......
这就是说逗号隔开的是表达式,那么对于i=(a=2*3,a*5),a+6;就可以理解了:i=(a=2*3,a*5)是一个表达式,a+6是另外一个表达式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-30
一、赋值号左边必然是变量, a+7=c+b是错误的。等号是赋值运算,这就意味着等号左边必须是被赋值的变量,显然a+7是表达式,而不是变量。

二、赋值语句是由赋值表达式再加上分号构成的表达式语句。
其一般形式为: 变量=表达式;
在赋值语句的使用中需要注意以下几点:
1. 由于在赋值符“=”右边的表达式也可以又是一个赋值表达式, 因此,下述形式 变量=(变量=表达式); 是成立的,从而形成嵌套的情形。 其展开之后的一般形式为:变量=变量=…=表达式;
例如: a=b=c=d=e=5; 按照赋值运算符的右接合性,因此实际上等效于: e=5; d=e; c=d; b=c; a=b;
2. 注意在变量说明中给变量赋初值和赋值语句的区别。 给变量赋初值是变量说明的一部分,赋初值后的变量与其后的其它同类变量之间仍必须用逗号间隔,而赋值语句则必须用分号结尾。 例如: int a=5,b,c;
3. 在变量说明中,不允许连续给多个变量赋初值。 如下述说明是错误的: int a=b=c=5 必须写为 int a=5,b=5,c=5; 而赋值语句允许连续赋值。
4. 注意赋值表达式和赋值语句的区别。 赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
下述语句是合法的: if((x=y+5)>0) z=x; 语句的功能是,若表达式x=y+5大于0则z=x。 下述语句是非法的: if((x=y+5;)>0) z=x; 因为x=y+5;是语句,不能出现在表达式中。
第2个回答  2015-09-12
这个式子会从右到左依次赋值