c语言赋值语句"a=(7+b,b++,a+7)"语法错在哪里?

是一道选择题,这个选项是错的,我想知道为什么.谢谢各位

少个分号也是一个错误,但可能不是楼主真正想问的错误。

依楼主题意,这是一个赋值语句,既然是赋值语句,那么也就是说变量a还没有初始,因此你的这个语句就是错误的。解释如下
a=(7+b,b++,a+7) 假设b是有初值的,因此7+b;和b++都没有错误,但是a是正在被初始化的变量,因此a还没有初值,因此a+7就是错误的,因为a还没有初值,所以在进行初始化之前不可以进行运算。所以这里是错误的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-22
后面缺少分号来结束这个赋值语句。
a=(7+b,b++,a+7);

其实这个赋值语句相当于先后执行以下语句:
7+b; //这个语句无意义
b++;
a=a+7;
也就是将最后一个a+7的值付给a。

因为连续用逗号分割的若干个表达式的值等于最后一个表达式的值.
第2个回答  2010-04-22
这是一个用逗号表达式赋值的语句,表意不明确。
因为C标准并没有规定逗号表达式的求值顺序,所以可能先计算b++,也可能先计算7+b,所以此语句意义是编译器有关的。
第3个回答  2010-04-22
少个;号 这是个语句 语句必须以;号结束
第4个回答  2010-04-22
他是一个语句,那么就该以分号结束(;)
a=(7+b,b++,a+7);