首页

文章

c+=c++怎么理解

发布网友 发布时间:2022-02-28 09:56

我来回答

8个回答

热心网友 时间:2022-02-28 11:25

因为++的优先级比+=运算符的优先级要高,所以
c+=c++ 等价于 c+=(c++),又等价于
c = (c + (c++));
但需要注意的是,这个表达式的最终结果是不确定的,因为 c + (c++) 这个表达式
中,无法确定是+号前面的先求值,还是+号后面的先求值,这是由编译器决定的,C/C++标准中也是这样讲的。

结果就是,假如c=1;那么,如果+号左边的先求值,就是 c = 1 + 1 = 2;
如果是+号右边的先求值,就是c = 2 + 1 = 3;

在你的机器上,可能会得到2,也可能会得到3,但是你不能保证在别人的机器上也一定是2或者是3。因此,像这样的表达式应该避免,尽量不要写。

针对你对问题的补充,我再说一下,
你的结果正好是我所说的,编译器从+号右边先求值了
顺序如下: c = c + c++;
先计算 +号右边的c++,需要注意的是,是先求值,后自增,即如果c=1,c++的值是1,但运算
之后c就变成了2了,这样就是相等于 c = (c+1) + c = 2c + 1了
因为先对+号右边求值,所以c++的值虽然还是c,但运算之后+号左边后求值时的c已经是c++运算结果的(c+1)了,所以才等于 (c+1) + c = 2c+1

就是这么回事,我结合ANSI C语言标准,已经说的非常清楚了,希望对你有帮助:)

热心网友 时间:2022-02-28 12:43

1、因为++的优先级比+=运算符的优先级要高,所以
c+=c++ 等价于 c+=(c++),又等价于
c = (c + (c++));
但需要注意的是,这个表达式的最终结果是不确定的,因为 c + (c++) 这个表达式
中,无法确定是+号前面的先求值,还是+号后面的先求值,这是由编译器决定的,C/C++标准中也是这样讲的。
2、结果就是,假如c=1;那么,如果+号左边的先求值,就是 c = 1 + 1 = 2;
如果是+号右边的先求值,就是c = 2 + 1 = 3;
在一台机器上,可能会得到2,也可能会得到3,但是不能保证在别人的机器上也一定是2或者是3。因此,像这样的表达式应该避免,尽量不要写。

热心网友 时间:2022-02-28 16:09

c+ = c++;
也就相当于
c = c + (c++);
相当于
c = c + c;
c = c + 1;
所以是
(c+=c)++

仔细看后两个结果是一样的撒!
=======================
你加了运算符优先级最高括号,所以是先执行括号里面的再执行以外的运算。
c+=(c++)的运算顺序是
c = c + 1
c = c + c
(c += c)++ 的运算顺序是
c = c + c
c = c + 1
也就是我前面回答所说的。
================
前面那个叫笨小孩的说的有理。应该是他说的那样。

热心网友 时间:2022-02-28 18:17

是c=c+(c++) ,也就是c+=(c++)
用运算符的优先级就可以判断出来

问题是在于这样写是不好的书写,lz可以试一下,在不同的编译器中的结果,在TC2.0中c最后是3,但是在VC6.0中c结果是2,问题是在于c++的自增到底是发生在整个语句结束后,还是在应用后立刻发生的追问可c++不是先使用后自增吗?

追答诚如ls所讲,这个在C语法里没有规定,是由编译器自己决定的

热心网友 时间:2022-02-28 20:42

赋值表达式,从右向左开始进行运算
c+=c++;
是按你提供的第一个表达式的优先级运算的;
等价于:c=c+(c++);
你给的第二个表达式是错误的,++/--的运算对象必须是变量,不能是数值(不能是一个表达式的计算结果)。

热心网友 时间:2022-02-28 23:23

是第一个, 运算符优先级问题,不过最好要这么写, 不好的编码习惯

热心网友 时间:2022-03-01 02:21

c = c + (c++);
视频相册制作软件如何做视频相册? 用word2007自动生成目录后,目录上始终有个“ 更新目录”的框,怎么去... Word2007目录怎么删除正文 手机不能横屏了是怎么回事? 庞贝柱的结构样貌是怎样的? 埃及庞贝柱景点描述 庞贝柱是怎样的历史? 埃及庞贝柱历史追溯 庞贝柱是个什么样的景点? 庞贝柱是为为了答谢谁而建的? 属蛇穿什么转运最旺运 属蛇什么颜色转运最旺 属蛇的人什么颜色转运最旺 英国查理一世时期君主专政的特征 增值税专用发票开错作废证明怎么写 女主为了救男主被拔掉指甲,被活埋,但男主却认错了人,这本小说叫... 什么地方能读到法拉奇的小说男子汉 高级职称有什么待遇 职称高级相当于什么? HUAWEI 华为 AM185 入耳式有线降噪耳机-适用对象 华为FreeBuds Pro有线充版-入耳式真无线动圈主动降噪蓝牙耳机(陶瓷白... HUAWEI 华为 FreeLace Pro 入耳式颈挂式动圈主动降噪蓝牙耳机 曜石黑... HUAWEI 华为 FreeBuds Pro 入耳式真无线动圈主动降噪蓝牙耳机 墨韵白推... 华为Freebuds 3 无线充版半入耳式真无线蓝牙耳机(碳晶黑)-详细介绍... HUAWEI 华为 FreeBuds 悦享版 入耳式无线蓝牙耳机-详细介绍 如何评价华为新旗舰tws耳机freebudspro? HUAWEI 华为 FreeBuds Pro 无线蓝牙耳机推荐 字符串"\\\"ABC\"\\"所占内存字节的长度 怎样挑选千元内的羊绒大衣? 现在思科的CCNA,CCNE,CCIP的考证费分别是多少啊,通过率怎样 长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 淘宝客必备的九大工具有哪些? 电脑里硬盘如何共享怎么实现多台电脑共用一块硬盘 两台电脑一个硬盘两台电脑是否可以同时用一个硬盘 共享电脑硬盘怎样设置局域网电脑硬盘共享 现在下载歌曲好还是不下好 故障码P033D的含义解析 切菜机多功能型切菜机 scanbox三维扫描仪 苹果13没有删除的备忘录怎么恢复? iphone备忘录永久删除怎么恢复?iphone备忘录恢复最近删除文件方法介绍... 在C语言中?:表达式是什么意思? C,C+和C++它们有什么区别 C.C的真名 C-C, C=C 有什么区别? c:\与c:区别 c+是什么? C语言'c','\c'的区别是什么? C表示什么? C语言中*&C什么意思? 在C语言中“%c%c\n”和“%d%d\n“分别说明什么。。。?? c语言中 %c表示什么 c++中%c是什么意思 c语言中%*c%c什么意思 C语言中 %*c 是什么意思? C语言中/与%的区别 %*c%c在c语言中是什么意思 C语言中“+=”是什么意思? 如何解除手机号绑定 C语言中 !是有什么含义? 怎么解除和手机号的绑定? excel中C:C和$C:$C有什么区别? C语言属于什么语言? C语言是什么类型的语言? c语言本身是开源的吗?c语言是用什么写的? c语言中for语句是怎么用的 c语言中for的用法 for在c语言中的用法 for在c语言中是什么意思? c语言中for语句的用法及规则是什么? c语言for的用法 C语言for循环的格式和用法是什么? C语言for 用法 求解c语言for的用法。 c语言for语句的用法 关于C语言中for 的用法 C语言中for语句的用法是什么? c语言for用法 c语言中for是什么意思 C语言中的“for(.....)”是什么函数? 火龙果不小心放到冰箱冻硬了,还能吃吗?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com