C语言可以连续赋值么?如c=a=b=5????说详细哦

另外mian前的void带与不带有什么区别?... 另外mian前的void带与不带有什么区别? 展开
 我来答
爱教育爱学习
高粉答主

2019-10-30 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112732

向TA提问 私信TA
展开全部

可以连续赋值。

c=x(x:a=b=5)时,因为=的结合性从右到左,所以先计算x的值,计算x的值的时候发现x=y(y:b=5),所以需要先计算y的值,计算y的值的时候发现y=z(z:5),所以需要先计算z的值。

定义变量a,b,c且没有赋初值的情况下,如果c=a=b这是会报错误的;当c=a=b=5;这样应可以翻译成b=5;a=b;c=a;因此语句是正确的。

扩展资料

赋值运算符=

在C语言第一篇的时候,写过C语言中“=”不等于数学中的“=”而是叫做赋值这么一个概念。在C中“=”的作用就是赋值。就是将右边的值(右值)赋予给左边的值(左值)。

在数学中,i会等于0。但在C语言中,i等于1,它的意思是把i加上1再赋值给i。可以理解先临时声明一个int类型的变量它的值是i+1的和,然后再将这个临时声明的变量赋值给i。赋值的一个规定就是必须是右值赋值给左值。不能和数学的等于号一样自变量两边都可以。

春云者0c5e
2017-07-21 · TA获得超过311个赞
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:96.3万
展开全部
当然可以,实际上他的工作流程如下:
编译器读到c=x(x:a=b=5)时,因为=的结合性从右到左,所以先计算x的值,
计算x的值的时候发现x=y (y : b = 5),所以需要先计算y的值,
计算y的值的时候发现y=z (z : 5),所以需要先计算z的值,
而z就是数字5,于是开始回溯,
或者简单点说:5先赋值给b, 产生一个中间变量temp0,temp0的值就是b=5的结果5. 然后将该中间变量赋值给a,此时temp0消失,产生一个中间变量temp1,同理temp1的值也是5, 左后将temp1的值赋给c,temp1消失。至此全部变量获得了值5。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-03-29
展开全部
感觉以上说的都不完全对
c=a=b=5的操作应为:这里有3个赋值号,它们优先级相同,结合方向从右到左(书上可以查到),所以首先执行b=5,使得变量b的值为5;
然后执行中间的赋值号,把右边的表达式b=5的值赋给a,因为表达式b=5的值为被赋值变量b的值,所以实际是赋了5给a;
最后执行最左边一个赋值号,把表达式a=b=5的值赋给c,根据上面同样的道理,实际是把5赋给了c.
关键点:左边两个赋值号赋的实际是表达式的值。而b=5和a=b=5本身是赋值表达式,赋值表达式的值为被赋值变量的值。
我觉得这才是实质上的东西
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钱柯伟有钱
2018-03-22
知道答主
回答量:5
采纳率:100%
帮助的人:4218
展开全部
绝对不可以连续赋值!!!C语言的基本要求。你可以写()int a =5;int b=5;int c=5;)或(int a,b,c;a=5;b=5;c=5;)切记不可写a=b=c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来文漪08W
2013-03-28 · TA获得超过206个赞
知道小有建树答主
回答量:103
采纳率:0%
帮助的人:158万
展开全部
可以,从右往左赋值,表达式的值等于最后一个被赋的值,具体顺序是根据运算符优先级……
不带void默认返回int,用return 0;正常结束程序;如果加void,不返回任何值,程序以return;或运行到结尾结束;当然现在大多数编译器带不带void有没有return都能正常结束程序,但个人不推荐这种方式,main函数返回的整数值可以用于检测程序是否正常结束。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 5条折叠回答
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式