发布网友 发布时间:2022-04-22 04:14
共5个回答
热心网友 时间:2023-08-10 21:25
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语言运算符号_百度百科
热心网友 时间:2023-08-10 21:25
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都是运用赋值的相关知识,将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。
很多语言都使用“等于号”(即“=”)来作为赋值号,所以可能和和平时的理解不同,在使用的时候应予以注意。
参考资料:百度百科-赋值
热心网友 时间:2023-08-10 21:26
--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语言_百度百科
热心网友 时间:2023-08-10 21:26
在表达式层面,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的汇编结果就知道了
热心网友 时间:2023-08-10 21:27
简单说就是i=i+2 比 i+=2多了一次对变量 i 的运算。
你可以理解为多了一次寻址行为。所以后者效率高