首页 新闻 搜索 专区 学院

C++的赋值运算符

0
悬赏园豆:10 [待解决问题]

下列表达式中不能出现在赋值运算左侧的是?f(a,b),a=b,*p,&a,我怎么感觉都可以出现在左侧?

C++
阿克西斯教成员污米饭的主页 阿克西斯教成员污米饭 | 初学一级 | 园豆:129
提问于:2017-12-10 22:49
< >
分享
所有回答(5)
0

除了a=b都不可以吧...

吴瑞祥 | 园豆:28979 (高人七级) | 2017-12-11 10:42

答案是&a,想不通

0

f(a,b)

Howie-聪 | 园豆:202 (菜鸟二级) | 2017-12-21 16:06

答案是&a,想不通

0

 &a,f(a,b)不可以吧。应该是这样。

xhw_233 | 园豆:263 (菜鸟二级) | 2017-12-27 22:25

答案是&a,想不通

0

1、先说f(a,b),若返回值是值类型,那就不能出现在左侧,因为返回的是一个具体值,比如说0,总不能让0=某一个值吧;但如果返回值是一个指针类型或者引用,就可以了

2、a=b,是可以的,比如说a=b=一个值,那就先将那个值给b再赋给a,就可以了。

3、*p,若p是一个指向右侧值类型的一个指针,那就可以这样了。

4、&a,对a进行取地址操作,那么得到的将是一个常数,就回到1的第一种情况了。

综上,一定不能出现在赋值运算符左侧的就是&a

Arthurian | 园豆:1088 (小虾三级) | 2018-01-21 13:43

第三点*p,这里对p的限制应该是不可以作为右值出现才可以吧,一般的指针都是左值,可是在赋值运算符两侧出现。

相关链接:关于左值和右值的区别与联系

支持(0) 反对(0) TearsOfDawn | 园豆:34 (初学一级) | 2018-06-03 10:40
0

我觉得&a是可以放在左侧的,比如 int m , int &a = m,当a时一个m的引用时,是可以的

xqn2017 | 园豆:199 (初学一级) | 2018-01-24 10:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册