请问(a = b)= c是合法的么?

vipstepstep 2011-05-07 12:29:12
# include "stdafx.h"

int main(void) {
int a = 0;
int b = 1;
int c = 2;

(a = b) = c;

printf("%d\n", a);
}

上面的程序在VC++6.0下通过了,但是宋劲衫老是的一站式linux上说(a = b) = c是不合法的,(a = b)这个表达式不能
再做左值了,因此放在等号左边是错误的。
...全文
1106 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vipstepstep 2011-05-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 supermegaboy 的回复:]
引用 7 楼 vipstepstep 的回复:
引用 6 楼 pcliuguangtao 的回复:

引用 1 楼 supermegaboy 的回复:
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。

为什么C/C++两者对此的定义不同那??


看来大家对此有更多疑问,希望有人能够进来解答一下


这个问题并非什么原理问题,只不……
[/Quote]

呵呵,等以后学了C++应该会明白
pcliuguangtao 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。
[/Quote]
为什么C/C++两者对此的定义不同那??
xmu_才盛 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。
[/Quote]

怎么最近很少见呢??
vipstepstep 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]

C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。
[/Quote]

谢谢
nwpucoder 2011-05-07
  • 打赏
  • 举报
回复
合法
hzy694358 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]

C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。
[/Quote]
噢噢,学习了,纯C用得很少
在VC下肯定是没问题的
飞天御剑流 2011-05-07
  • 打赏
  • 举报
回复
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。
飞天御剑流 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 vipstepstep 的回复:]
引用 6 楼 pcliuguangtao 的回复:

引用 1 楼 supermegaboy 的回复:
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。

为什么C/C++两者对此的定义不同那??


看来大家对此有更多疑问,希望有人能够进来解答一下
[/Quote]

这个问题并非什么原理问题,只不过观念不同,规定而已。
vipstepstep 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 pcliuguangtao 的回复:]

引用 1 楼 supermegaboy 的回复:
C中的赋值表达式结果是右值,而C++是左值,所以上述代码在C中是非法的,但C++是合法的。

为什么C/C++两者对此的定义不同那??
[/Quote]

看来大家对此有更多疑问,希望有人能够进来解答一下

70,014

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧