| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1623 人关注过本帖
标题:让人不解的赋值表达式 “(a=3*5)=4*3” 。大家帮我理解下!!!
只看楼主 加入收藏
zhenhang
Rank: 1
等 级:新手上路
帖 子:18
专家分:2
注 册:2009-2-3
结帖率:80%
收藏
 问题点数:0 回复次数:13 
让人不解的赋值表达式 “(a=3*5)=4*3” 。大家帮我理解下!!!
以下内容摘自谭浩强著的《C语言程序设计》(第三版)第64页

请分析下面的赋值表达式:
(a=3*5)=4*3
先执行括号内的运算,将15赋给a,然后执行4*3的运算,得12,再把12赋给a。最后a的值为12。读者可以看到:(a=3*5)出现在赋值运算符的左侧,因此赋值表达式(a=3*5)是左值。请注意,在对赋值表达式(a=3*5)求解后,变量a得到值15,此时赋值表达式(a=3*5)=4*3相当于(a)=4*3,在执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变量a,而不是赋给3*5。正因为这样,赋值表达式才能够作为左值。


面对这段解说,我不知所云。我始终认为这种写法就是不对的,这段所谓的解释就是扯蛋,但是老谭的这本教材在国内还是挺权威的,我希望能得到诸位C编程爱好的指导!!!
搜索更多相关主题的帖子: 表达 赋值 
2010-02-04 23:58
coming0011
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-2-4
收藏
得分:0 
我也正在看,等待解释~
2010-02-05 00:28
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
a是变量,自然会变,先赋值15,又赋值12。
c的表达式很强大

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-02-05 00:52
血色味道
Rank: 2
等 级:论坛游民
帖 子:8
专家分:50
注 册:2010-2-4
收藏
得分:0 
它相当于a=15;a=12;这样拆开的形式,老谭写成那样就是就是想说明问题,即变量可以做左值,常量如15不能做左值。
2010-02-05 08:04
fly66
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2010-1-26
收藏
得分:0 
右边的值赋值给左边
2010-02-05 09:15
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
DevC下C程序编译不通过但C++程序就过了……
2010-02-05 09:43
jomwang
Rank: 2
等 级:论坛游民
帖 子:12
专家分:16
注 册:2010-1-28
收藏
得分:0 
我个人的理解是:
不管a 的赋值表达式是多么复杂,前面被赋什么值,只要最后赋一个值,那么a的值就是最后的那个值。
希望大家不要笑偶!

[ 本帖最后由 jomwang 于 2010-2-5 09:53 编辑 ]
2010-02-05 09:52
playmyself
Rank: 5Rank: 5
来 自:第3系4级宇宙空间
等 级:职业侠客
帖 子:76
专家分:399
注 册:2009-7-8
收藏
得分:0 
一般的C认为
(a=3*5)=4*3;
=>
(a=15)=12;
=>
(15)=12 //Error..

而一般C++认为
(a=3*5)=4*3;
=>
(a=15)=12;
=>
(a)=12
=>
a //ok!

无聊创造奇迹。
2010-02-05 10:00
xinjinlong
Rank: 3Rank: 3
来 自:河南南阳
等 级:论坛游侠
帖 子:61
专家分:117
注 册:2010-1-19
收藏
得分:0 
表达式赋值就是这样,先是:a=15,再是a=12
2010-02-05 10:05
qianliemao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-1-30
收藏
得分:0 
谭老师只是举个简单的例子说明一个问题:赋值表达式可以做左值.这种写法在实际中不一定有多大用处,不用深究.
但有时候可能为了自己调试方便什么的.比如a的值一般为15,现在想临时赋个12 观察一下情况.但是又怕我这一调整,把原来的值给忘了.所以就这样临时写一下,相当于注释的作用. 个人理解.
2010-02-05 10:14
快速回复:让人不解的赋值表达式 “(a=3*5)=4*3” 。大家帮我理解下!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017971 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved