关于++ ,-- ?在变量前面与后面的区别?

Alice905747457 2011-11-07 09:38:18
现在在自学C++,可是看书的时候有很多问点?现在就有点搞不太懂,请问你们谁能详细的解释下,
谢谢亲们。
唉,好烦,学习编程为什么这么难呢。
谁能帮帮我啊。
...全文
885 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
shongzhaoyang 2011-11-08
  • 打赏
  • 举报
回复
++在前,先++再计算。在后,先计算再++
petershijin 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 suizouwuya 的回复:]
引用 3 楼 sryan 的回复:

++在前和在后都是表达式 理解好表达式的值就行了
++在前 表达式的值是原值+1 并且返回自身的引用 可以当左值
++在后,表达式的值是原值,返回的是一个临时的变量,不能当左值

3楼说的就可以结贴了吧
[/Quote]
严重同意此答案。
qwer_boo 2011-11-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keiy 的回复:]

计算顺序不同,EX:
a=i++; //a=i;i=i+1; 先赋值,后++
a=++i; //i=i+1; a=i; 先++,后赋值
[/Quote]++
追求执着 2011-11-08
  • 打赏
  • 举报
回复
漫漫来,冰冻三尺非一日之寒!
一叶之舟 2011-11-08
  • 打赏
  • 举报
回复
a=i++; //a=i;i=i+1; 先赋值,后++
a=++i; //i=i+1; a=i; 先++,后赋值
apn172 2011-11-07
  • 打赏
  • 举报
回复
在前面参与运算之前先计算,在后面参与运算之后再计算
suizouwuya 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sryan 的回复:]

++在前和在后都是表达式 理解好表达式的值就行了
++在前 表达式的值是原值+1 并且返回自身的引用 可以当左值
++在后,表达式的值是原值,返回的是一个临时的变量,不能当左值
[/Quote]
3楼说的就可以结贴了吧
fiveznh 2011-11-07
  • 打赏
  • 举报
回复
++,--前置的话,变量直接自增自减后直接使用,
如果是后置的话,同样是先运算,但暂不使用,却临时申请内存存储这个变量,效率自然没有前置的好了
cai0538 2011-11-07
  • 打赏
  • 举报
回复
好好看书,多多动手!
认识视界 2011-11-07
  • 打赏
  • 举报
回复
放在前边是先加后执行其他命令,放在后边是先执行其他命令再植执行加法
自由 2011-11-07
  • 打赏
  • 举报
回复
++运算符其实也是一个函数,任何类也都可以重载这个操作符
前置的形式是:
const int& operator++(int& a);
return 加后的值
后置的形式是:
const int operator++(int& a, int);
return 加前的值

代码只用作示意
zzcmx2008 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sryan 的回复:]
++在前和在后都是表达式 理解好表达式的值就行了
++在前 表达式的值是原值+1 并且返回自身的引用 可以当左值
++在后,表达式的值是原值,返回的是一个临时的变量,不能当左值
[/Quote]

+
iamnobody 2011-11-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keiy 的回复:]
计算顺序不同,EX:
a=i++; //a=i;i=i+1; 先赋值,后++
a=++i; //i=i+1; a=i; 先++,后赋值
[/Quote]

这个。。。个人认为没有先赋值后++之说。以下是我的看法。
c++中,一个表达式可能有一个值。例如:i+1; i = 3;i * 2; fun();//fun()有返回值时。;i+=3;i++这样的表达式都有一个值。
(i++)这个表达式的值是i修改之前的值。
(++i)这个表达式的值是i修心之后的值。

JieTouLangRen 2011-11-07
  • 打赏
  • 举报
回复
前置比后置的效率高
碎炎 2011-11-07
  • 打赏
  • 举报
回复
++在前和在后都是表达式 理解好表达式的值就行了
++在前 表达式的值是原值+1 并且返回自身的引用 可以当左值
++在后,表达式的值是原值,返回的是一个临时的变量,不能当左值
mengmingtao 2011-11-07
  • 打赏
  • 举报
回复
放在前面就是先计算
int a,b = 0;
a = ++b;
相当于
b = b+1;
a = b;


a = b++;
相当于
a = b;
b = b + 1;
柯本 2011-11-07
  • 打赏
  • 举报
回复
计算顺序不同,EX:
a=i++; //a=i;i=i+1; 先赋值,后++
a=++i; //i=i+1; a=i; 先++,后赋值
本题要完成的是一组简单C表达的运算。所有表达式存放在文件 CExpression.txt 中,每个表达式一行。每行的长度不会超过80个字符。文件最后有一个空行表示结束。 每个表达式,只包含简单的整数变量和限定的一些操作符,表达式中没有常量。总共有26个可能出现在表达式中的变量,分别命名为 a,b,...,z。每个变量最多出现一次。26个变量的初值分别为1,2,...,26。 表达式中的操作符,包括:两个二元操作符 +, -,表示加,减运算。例如,表达式a+c-d+b(即1+3-4+2)的结果为2。 单独一个-号不能放在变量前面,表示负数。 表达式中还包含两个一元运算符:++,--,表示加一和减一运算。它们既可以出现在一个变量前面、也可以出现在后面。如果出现在变量前面,则表示先对变量进行加一/减一运算,然后变量值参与表达式计算。如果出现在变量后面,则表示变量的原值参与表达式计算,表达式计算完之后,变量值加一/减一。 例如,表达式 -- c + b-- 的结果为 4, 表达式计算完之后, b,c的值分别为1,2 输出格式要求:输出直接显示在屏幕上。对于每个表达式,第一行输出表达式的内容。第二行输出表达式的值,后面几行输出参与运算的各个变量的结果值。 其它说明: (1) 如果表达式中存在空格则忽略。 (2) 每个表达式独立计算,即前面的表达式运算结果不影响后面的表达式。 (3) 对于错误的输入(如有歧义的表达式,a+++b), 直接输出一行"expression error"即可。输入正确性校验,不作为主要评判标准(即可以给出错误答案)。但不应导致程序运行错误。 示例输入: a + b b - z a+b--+c++ c+f--+--a f--+c--+d-++e ++a++ 对应输出: Expression: a + b value = 3 a = 1 b = 2 Expression: b - z value = -24 b = 2 z = 26 Expression: a+b--+c++ value = 6 a = 1 b = 1 c = 4 Expression: c+f--+--a value = 9 a = 0 c = 3 f = 5 Expression: f-- + c-- + d-++e value = 7 c = 2 d = 4 e = 6 f = 5 Expression: ++a++ expression error

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧