C语言的表达式这样写是合法的吗?a=(b=4)+(c=6);

这是一个C语言视频教程中的例子,但在C程序中试验却不能通过,不知错在哪里,望高手指点。
#include"stdio.h"
void main()
{
int a,b,c;
a=(b=4)+(c=6);
printf("%d\n",a);
}
看到大家的回答,我在VC++6.0下确实能够通过,输出为10,正确。但在turbo C windows1.0下却还是通不过,提示:
Turbo C 汉化版 2.0 版权所有 (c) 宝兰国际公司 & 软景工作室 1998.6
temp.c:
警告� temp.c 7: 'c' 指定一个值给从未使用过的哪一个 在函数
警告� temp.c 7: 'b' 指定一个值给从未使用过的哪一个 在函数

代码编译上没问题啊,VC++6.0运行通过

是不是结果不对啊

---------------------------------------------------------------

没用过Turbo C,不是很懂,但是windows 1.0是不是古老了一点啊,应该是LZ编译器问题吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-19
在TC和VC下都能编译通过,而且输出为10
a=(b=4)+(c=6);
()优先级最高,所以先处理()里面的表达式,这样b=4,c=6,a=4+6.
如果不加(),那么a=b+4+c=6将是错误的赋值语句,因为+优先=,所以先处理b+4+c,这样等号左边出现常量4是非法的。本回答被提问者采纳
第2个回答  2011-02-19
确实没有错,我在后面加上getch(),立刻就读出来了10
第3个回答  2011-02-19
程序没有错呀,我编译可以过,可以正常执行
相似回答