问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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++);
组合数公式C= C(n, m)怎么理解?

组合数公式C=C(n,m)=A(n,m)/m。组合数公式是指从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合,从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做n个不同元素中取出m个元素的组合数。用符号c(n,m) 表示。组合公式的推导是由排...

赋值语句 C=(a,b,c)怎么解释

从左到右计算,先计算a表达式,再计算b表达式,最后计算c表达式,将逗号表达式的最后的一个表达式赋给C

c语言(!b)==c怎么理解?

(1或者0)==c,当c等于括号中的值时,整个表达式等于1(真);否者等于0(假)。

c语言中c==0和c=0区别

==是关系运算符,语句c==0是一个关系表达式,就是当c是0的时候语句为真,表达式值为1,c不是0的时候语句为假,表达式值为0。而c=0就是赋值语句,将0赋值给c

C语言中 a=b==c怎么理解

“=”是赋值符,把c的值赋给b赋给a,最后a、b、c的值都相等,“==”是判断符;=赋值==等于运算说a=b=c,表达式运行a值赋给b、c运行完abc值相等;a=b==c,复合表达式先a值赋给b与c比较相等则返0,否则返非零值;运算b==c,若b与c相等,那么得出的值为1。

排列组合c怎么算

2、交换性质:C(n,m)=C(n,m-1)+C(n-1,m-1),也就是说,从n个元素中取出m个元素的组合数等于从n个元素中取出m-1个元素的组合数加上从n-1个元素中取出m-1个元素的组合数。这个性质可以用来拆分组合数,从而更方便地解决问题。3、递推关系:C(n,m)=C(n-1,m-1)+C(...

热容的表达式是Q/丅,热温商的表达式也是Q/T,怎么理解?

这是一道关于热容和热温商表达式理解的问题。首先,我们需要明确这两个概念的定义和用途。1. 热容的定义:1. 热容(C)是物质在某一过程中吸收或放出的热量(Q)与温度变化(ΔT 或 Δθ,有时简化为T的差值)之比。2. 表达式:C = Q / ΔT 或 C = dQ / dT(在微小温度变化时)。3. ...

B∪C=C说明什么啊

B∪C=C说明B是C的子集,即B包含于C,C包含B 如果不懂,请追问,祝学习愉快!

C语言程序中a=b==c是什么意思

1、赋值语句本身也是一个表达式,也是有返回值的,它的返回值就是赋值给变量的值,比如b=1这个语句,会把1赋值给b,但是它本身也是个表达式,这个表达式的返回值为1。2、赋值语句是先算等号右边的值,把右边的值赋值给左边的变量 3、分析一下a=b=c,按照赋值语句的运算方式,计算右边的表达式,也...

麻烦 帮我讲解物理公式 为什么C=入F

光的速度公式 c=λf,其中 λ 光在中空中的波长,f光的频率。光的频率由光源决定是不变的,光的波长与介质有关是随介质变化的。

理解是什么 什么叫理解 如何理解 理解是 理解的意思 理解别人 没有人理解我 言语理解 学会理解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
0#柴油一吨等于多少升 谁有这魔兽争霸 仙剑奇侠传的图 老图了 我在淘宝的店铺是经营特产零食的,想加入消保,想问下:加入消保得多少钱... 淘宝开店卖手机需要什么手续? 玩魔兽RPG图的仙剑奇侠传进入了蜀山的练功房怎么出来啊啊a 淘宝卖零食的话加入消保要多少钱? 魔兽里面单机游戏仙剑奇侠传打完了女飞贼然后去哪里 ...包括它的起始点,发展历史等所有相关资料。多多益善! ai如何只保存选中的画板内容ai如何只保存选中的画板内容图片 在ai中怎么保存图片? 在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(.....)”是什么函数? 火龙果不小心放到冰箱冻硬了,还能吃吗?