++i和i++有什么区别啊?
15个回答
展开全部
区别在于:++先做别的事,再自己加1,++i先自己加1,再做别的事情,形象的理解,你可以把++i比作自私的人,首先考虑自己的事,i++是无私的,先为别人照想,这样方便记忆。
首先我们定义一个变量i,int i=5,然后我们做执行printf(“%d”,i++),我们会发现输出结果是5。
是为什么呢,我们要搞清楚printf(“%d”,i++)这句话是做两件事:1.输出i、2.i=i+1,这里的顺序,是先输出i,再执行i=i+1。
然后我们初始化变量i,i=5;、然后我们做执行printf(“%d”,++i)、我们会发现输出结果是6,其实printf(“%d”,++i);做的也是这两件事:1.输出i、2.i=i+1,只是先做i=i+1,然后输出i。
推荐于2017-11-20
展开全部
至于++i和i++有什么区别,举个例子
1.a = i++; 等校为
a = i;
i = i + 1;
2.a = ++i; 等校为
i = i + 1;
a = i;
i++和++i的 最重要的区别大家都知道就是 +1和返回值的顺序
但,两这还有一个区别(在C++中)就是i++在实现的时候,产
生了一个local object
class INT;
//++i 的版本
INT INT::operator++()
{
*this=*this+1;
return *this;
}
//i++ 的版本
const INT INT::operator ++(int)
{
INT oldvalue=*this;
*this=*this+1;
return oldvalue
}
所以从效率上来说++i比i++来的更有效率
具体细节你可以看More Effective C++ 的M6
看看C++类重载运算符就知道了。
对于i++的实现是:
int temp;
temp = i;
i = i+1;
return temp;
而++i的实现是:
i = i+1;
return i;
比如printf("%d",i++);是先输出i值随后i自加,而printf("%d",++i);正好相反
for(operation1;operation2;operation3)
{
//Do Something
}
都是按
operation1
operation2
//Do Something
operation3
的顺序来执行的
而i++与++i在单独的语句中结果是一样的。
简单而言: ++i 在 i 存储的值上增加一并向使用它的表达式 ``返回" 新的, 增加后的值; 而 i++ 对 i 增加一, 但返回原来的是未增加的值。
1.a = i++; 等校为
a = i;
i = i + 1;
2.a = ++i; 等校为
i = i + 1;
a = i;
i++和++i的 最重要的区别大家都知道就是 +1和返回值的顺序
但,两这还有一个区别(在C++中)就是i++在实现的时候,产
生了一个local object
class INT;
//++i 的版本
INT INT::operator++()
{
*this=*this+1;
return *this;
}
//i++ 的版本
const INT INT::operator ++(int)
{
INT oldvalue=*this;
*this=*this+1;
return oldvalue
}
所以从效率上来说++i比i++来的更有效率
具体细节你可以看More Effective C++ 的M6
看看C++类重载运算符就知道了。
对于i++的实现是:
int temp;
temp = i;
i = i+1;
return temp;
而++i的实现是:
i = i+1;
return i;
比如printf("%d",i++);是先输出i值随后i自加,而printf("%d",++i);正好相反
for(operation1;operation2;operation3)
{
//Do Something
}
都是按
operation1
operation2
//Do Something
operation3
的顺序来执行的
而i++与++i在单独的语句中结果是一样的。
简单而言: ++i 在 i 存储的值上增加一并向使用它的表达式 ``返回" 新的, 增加后的值; 而 i++ 对 i 增加一, 但返回原来的是未增加的值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、首先两者的区别是:前者是先赋值,然后再自增;后者是先自增,后赋值
2、++i和i++都是分两步完成的。因为++i
是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i
=
a
=b,即
++i
是一个左值(可被寻址的值);i++
的后面一步是自增,不是左值。(2的两步分解与左右值的因果关系只是我的直觉,对错还待考证)
3、++i
和i++
的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。
扩展资料:
关于对循环i++的困惑:
for(int
i=0;i<10;i++){
System.out.println(i);
}
过去我们都知道i++和++i的字面区别是在自增,i++是运行的时候为原来的数,运行完后自增。所以一直对这里的i++以为也是同样的操作。
进行步骤如下,i=0,满足i<10,则进行i++操作。由于i++是当前运行的时候不自增,所以是i为0,然后执行输入语句,输出0.
接着返回自增条件i变成1.以此进行循环。所以最终调试出来的结果是0,1,2,3,4,5,6,7,8,9.i=10的时候不满足i<10这个条件,跳出循环体。
所以执行步骤是:
1、i=0
2、i<10
3、i++
4、输出。
参考资料:搜狗百科——C语言
2、++i和i++都是分两步完成的。因为++i
是后面一步才赋值的,所以它能够当作一个变量进行级联赋值,++i
=
a
=b,即
++i
是一个左值(可被寻址的值);i++
的后面一步是自增,不是左值。(2的两步分解与左右值的因果关系只是我的直觉,对错还待考证)
3、++i
和i++
的使用,一般来说在循环域里面,这两者并没有什么很大的区别,因为编译器一般都会给你做优化。但是要注意其生存周期,就好像指针delete以后一定要赋予0一样,我们要注意i值在程序流中的变化。
扩展资料:
关于对循环i++的困惑:
for(int
i=0;i<10;i++){
System.out.println(i);
}
过去我们都知道i++和++i的字面区别是在自增,i++是运行的时候为原来的数,运行完后自增。所以一直对这里的i++以为也是同样的操作。
进行步骤如下,i=0,满足i<10,则进行i++操作。由于i++是当前运行的时候不自增,所以是i为0,然后执行输入语句,输出0.
接着返回自增条件i变成1.以此进行循环。所以最终调试出来的结果是0,1,2,3,4,5,6,7,8,9.i=10的时候不满足i<10这个条件,跳出循环体。
所以执行步骤是:
1、i=0
2、i<10
3、i++
4、输出。
参考资料:搜狗百科——C语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
i++和++i的区别就是:
i++
:先引用,后增加
++i
:先增加,后引用
(1)
i
++:
int
i
=
0;
while
(i
<
10)
{
i
++;
}
(2)
++i:
int
i
=
0;
while
(i
<
10)
{
++
i;
}
(1)与(2),经过运算后,i的值都是10。
现在我们来看一段程序
换句话就是:
i++
:
先在i所在的表达式中使用i的当前值,再让i加1
++i
:
先让i加1,再在i所在的表达式中使用i的新值
取决于++和i的相对位置:
++在i前面,i先加1,然后在表达式中用i的值;++在i后面,先在表达式中用i的值,然后i再加1。
在while和for循环中的
++i
和
i++
是没有区别的。
扩展资料:
在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。
资料来源:百度百科词条-c语言程序设计
i++
:先引用,后增加
++i
:先增加,后引用
(1)
i
++:
int
i
=
0;
while
(i
<
10)
{
i
++;
}
(2)
++i:
int
i
=
0;
while
(i
<
10)
{
++
i;
}
(1)与(2),经过运算后,i的值都是10。
现在我们来看一段程序
换句话就是:
i++
:
先在i所在的表达式中使用i的当前值,再让i加1
++i
:
先让i加1,再在i所在的表达式中使用i的新值
取决于++和i的相对位置:
++在i前面,i先加1,然后在表达式中用i的值;++在i后面,先在表达式中用i的值,然后i再加1。
在while和for循环中的
++i
和
i++
是没有区别的。
扩展资料:
在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。
资料来源:百度百科词条-c语言程序设计
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-10
展开全部
i++ 是先调用i进行运算 然后下一轮的时候变成i+1再进行运算
++i是第一轮就用i+1算 下一轮就是i+2 依次类推
++i是第一轮就用i+1算 下一轮就是i+2 依次类推
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询