i = i + 2 和 i += 2的区别

RT
谁不知道结果是一样的
问的就是内存中,的运算过程的区别

菜鸟请勿庄B,加分啦,高手回答,谢谢

i = i + 2 和 i += 2的区别主要有以下三点:

1、运算顺序不相同

简单说就是i=i+2 比 i+=2多了一次对变量 i 的运算。i=i+2是先进行i+2的运算得出一个结果,再赋值给i。i+=2就是先赋值然后在进行加法。

2、得到的结果不相同

C语言中i +=2 等同于 i = i + 2 这是简略写法,但是计算时算法不相同,i=i+2更容易得出i的赋值。例如:i=1,则i=i+2得到的结果是i=3,而i+=2得到的结果是i=1,运算得到的值不相同。

3、运算效率不相同

i=i+2运算效率最低,因为运算时读取右i的地址i+1,读取左i的地址;将右值传给左边的i(编译器并不认为左右i的地址相同),而i+=2运算时读取右i的地址,令i=1,将得到的值传给i(因为i的地址已经读出)。

扩展资料:

i = i + 2 和 i += 2都是和赋值相关的运算,赋值运算符除了=和+=外还包括-=,*=,/=,%=,&=,|=,^=,>>=,<<=。

其中=称为简单赋值,+=,-=,*=,/=,%=称为复合算术赋值,&=,|=,^=,>>=,<<=称为复合位运算赋值。

参考资料:c语言运算符号_百度百科

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-09-30

1、运算顺序不相同

简单说就是i=i+2 比 i+=2多了一次对变量 i 的运算。i=i+2是先用i的结果,然后在进行i=i+2的式子进行处理。i+=2是先进行i=i+2,然后得出来的结果就是i。

在表达式中,i=i+2就是先进行加法,然后在进行赋值。而i+=2就是先赋值然后在进行加法。

2、得到的结果不相同

C语言中i +=2 等同于 i = i + 2 这是简略写法,但是计算时算法不相同,i=i+2更容易得出i的赋值。如果i的值为1(i=1),i=i+2得到i的结果是i=3,而i+=2得到的结果是i=1,运算得到的值不相同。

3、运算效率不相同

i=i+2运算效率最低,因为运算时读取右i的地址i+1,读取左i的地址;将右值传给左边的i(编译器并不认为左右i的地址相同),而i+=2运算时读取右i的地址,令i=1,将得到的值传给i(因为i的地址已经读出)。

扩展资料:

i=i+2和i+=2都是运用赋值的相关知识,将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。 

很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。

参考资料:百度百科-赋值

本回答被网友采纳
第2个回答  2022-12-25

--i 是先执行i=i-1,然后再使用i的值, 这时的i 值就是表达式--i的值。i-- 是先使用i的值作为表达式i--的值,然后,执行i=i-1操作。

#include"stdio.h"
void main()
{
int i=4,j,k;
j=i--;    //i先赋值给j,然后i在执行i=i-1;
k=--i;    //i先执行i=i-1,然后再赋值给;
printf("i=%d,j=%d,k=%d",i,j,k);
}

运行结果为: i=2,j=4,k=2

扩展资料

C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。

因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。

参考资料:c语言_百度百科

第3个回答  2012-05-10
在表达式层面,i=i+2 做的事是先加,然后将中间结果赋值,是两步。而i+=2是一步

如果是C++ 首先看 i 是什么类型,如果是复杂类,结构,那么还要涉及到运算符是否重载,拷贝构造函数等等。

如果 i 是简单类型(int , char),在使用层面,i+=2 与 i=i+2 做的事是一样的,都是将 i 的值加了2,但生成的可执行代码不一样,且i+=2 与 i=i+2 运行的效率不同,i+=2 肯定快。

如果是C语言,同上一条。追问

请问能告诉我内存和CPU中的运算过程有什么区别吗?为什么效率会有差距?

追答

就知道你这个问题有问题。都选了最佳答案了还问?看看i+=2和i=i+2的汇编结果就知道了

第4个回答  推荐于2018-02-28
简单说就是i=i+2 比 i+=2多了一次对变量 i 的运算。

你可以理解为多了一次寻址行为。所以后者效率高本回答被提问者和网友采纳