i++和++i是C语言运算符,i++是后缀递增的意思,++i是前缀递增的意思。
1、i++是后缀递增的意思,i++是先进行表达式运算,再进行自增运算。把i++的运算过程拆分开,等效于i=i+1可以看到运算结果是一致的。
x = i ++; //先让x变成i的值1,再让i加1
2、++i是前缀递增的意思,++i是先进行自增或者自减运算,再进行表达式运算。运算结果可以发现,仅从i的值来看,++i和i++最终的i值是一样的,都是i自增加了1。
x = ++i; //先让i加1, 再让x变成i的值1
扩展资料
C语言运算符的特点
1、C语言是一种具有结构化编程、变量作用域和递归函数的过程化语言。
2、C语言中按值传递的形参和按值传递的指针也可以传递。
3、不同的变量类型可以与结构体结合使用。
4、只有32个保留关键字可以使变量和函数的命名更加灵活。
5、可以转换部分变量类型,比如整数和字符变量。
6、利用指针,C语言可以很容易地控制内存在较低的层次上。
7、预编译处理(预处理器)使C语言编译更具弹性。
参考资料来源:百度百科—C语言运算符
i++的作用是先对i进行操作再++;
如:
int
a
=
1;
int
b
=
a++;
//此时先运算b=a,再a++,故b=1,a=2
int
c
=
--a;
//此时先--a,再运算c=a,故c=1,a=1
i++ 和 ++i的基本功能是相同的,都是对变量i进行自增1运算,从功能上讲相当于i =i+1 ;
++运算符分为前缀++和后缀++,如i++中的++就是后缀运算符,++i中的就是前缀运算符,两个的区别在于:
前缀++,先使用变量,再进行变量自增1
后缀++,先进行变量自增1,再使用变量
如:
示例代码1:
int i=0;
while( i++ < 5 ) //先用i的原值与5比较,比较完成后,无论结果是真还是假,都要再进行i=i+1运算
{
System.out.print( i+ " ");
}
这个循环运行5次,输出 1 2 3 4 5,最后的i值是6
示例代码2:
int i=0;
while( ++i < 5 ) //先进行i=i+1运算,然后用i的新值与5比较,判断结果是真还是假
{
System.out.print( i+ " ");
}
这个循环运行4次,输出 1 2 3 4,最后的i值是5
i++和++i命令的区别有:
1、赋值顺序不同
++ i 是先加后赋值;i ++ 是先赋值后加;++i和i++都是分两步完成的。
因为++i 是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i = a =b,即 ++i 是一个左值;i++ 的后面一步是自增,不是左值。
形象的理解可以是i++先做别的事,再自己加1,++i先自己加1,再做别的事情。
2、效率不同
比如i=3,b=i++就是说b=3,完成之后让i变成4,b=++i就是先让i++变成4,然后b=4,其中++i比i++效率要高些。一般来说在循环域里面,这两者并没有什么很大的区别,但是要注意其生存周期,以及i值在程序流中的变化。
3、 i++ 不能作为左值,而++i 可以。
左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。一般来说,左值是可以放到赋值符号左边的变量。
但能否被赋值不是区分左值与右值的依据。比如,C++的const左值是不可赋值的;而作为临时对象的右值可能允许被赋值。左值与右值的根本区别在于是否允许取地址&运算符获得对应的内存地址。
比如:
int i = 0;
int *p1 = &(++i);//正确
int *p2 = &(i++);//错误
++i = 1;//正确
i++ = 1;//错误
扩展资料:
当i=5时,s=(++i)+(++i)和s=(i++)+(i++)的值:
1、当i=5时,s=(++i)+(++i)=13 先算第一个(++i),++在前面,就把i先加1再把赋值,即先把i变为6然后再得出(++i)的值为6,这时i已经变为6了,
再计算第二个(++i),++在前面也是先把i加1后再赋值,不过这时的i已经为6了,第一步的时候把i变成6了的,然后加1的话就变成7了,所以第二个(++i)的值为7,s=(++i)+(++i)=6+7=13。
2、s=(i++)+(i++)=11 先算第一个(i++),i在前面,就先赋值再把i加1,即(i++)的值为5,i的值变为6,第二个(i++),i在前面,先赋值再把i加1,这个时候的i已经为6了,即(i++)的值为6,而i已经变为7了。所以s=(i++)+(i++)=5+6=11。
参考资料来源:百度百科-自增自减运算符
参考资料来源:百度百科-++
i++和++i是什么意思 -
: i++是C语言运算符,i++是后缀递增的意思,++i是前缀递增的意思.1、i++是后缀递增的意思,i++是先进行表达式运算,再进行自增运算.把i++的运算过程拆分开,等效于i=i+1可以看到运算结果是一致的.x = i ++; //先让x变成i的值1,再让i...
i++和++i是什么意思
: i++ :先引用后增加++i :先增加后引用i++ :先在i所在的表达式中使用i的当前值,后让i加1++i :让i先加1,然后在i所在的表达式中使用i的新值
java中i++与++i是什么意思 -
: 在java中i++和++i都是运算方式 例:1、i++先引用后增加 {int i=0; int j=i++;} 运算过后,j=0;表明i++是指先把i赋值给j然后再自身加1;2、++i 先增加后引用 {int i=0; int z=++i;} 运算过后,z=1;表明++i是指先自身加1后赋值给z;
i++.与++i.到底是个什么意思 -
: i++ 是先赋值 后运算 可以把程序拆分2步执行 1、i=i, 2、i=i+1 ++i 是先运算 后赋值 可以把程序拆分2步执行 1、i=i+1 2、i=i 最后2者的执行结果都是将i+1
i++和++i的含义 -
: ++是自加运算符 如果另 i=1 , i++ 是在i的基础上 先求i的值 再+1, 最后结果是2,i=1; ++i, 是先+1 再得 i的值 ,结果为 2,i=2;
里面的i++ 或++i 是什么意思?
: i++就是i=i+1等号代表赋值,就是先赋值再加一 ++i就是先加一在赋值
i++,++i是什么意思
: 例如 i = 0; i++ 是先取 i 的值然后对 i 进行加1的操作; ++i是先对i进行加1的操作然后再取i的值; int k = i++; 这个时候k = 0,i = 1; int k = ++i; 这个时候k=1,i = 1;
i++ 和++i是一个意思吗? -
: 都是,区别在于i++是i先不自加,在语句完后自加,++i先自加;列如a=1+i++;i本来为1的话,这里a=1+1;语句完后i才加1为2;a=1+++i的话就先i=i+1;i=2.然后a=i+1,a=3
java中i++与++i是什么意思
: i++和++i都是对i进行+1的操作,不同的是i++是在i值被使用后才+1而++i是i值在被使用之前就+1;拿你的例子进行说明先分析count=(i++)+(i++)+(i++);运算是从左向右的,由于i++是在i值被使用后才+1所以第一个括号的(i++)应该为3,但是i的...
假设i是整型变量i++和++i含义什么? -
: ++i为前置自增,i++为后置自增,前者i先加1再参加其他运算,后者i先参加其他运算再加1,如果单独一条语句i++;或++i;两者运行效果相同,比如 for(int i=0; iint i = 0, j; j = i++; 运行结果为i为1,但是j为0 int i = 0, j; j = ++i; 运行结果为i为1,但是j为1