C++中,前置自加与后置自加函数的写法区别就是添加一个 Int o ?

作者&投稿:慎乔 (若有异议请与网页底部的电邮联系)
C语言前置自加和后置自加~

输出是:
4
8
只有一个变量n,怎么可能既是1又是2?(n)+(++n)是2+2=4!
第二个printf输出是4+4=8。

在C++表达式中 ++x 表示先将x自加1再带入计算;x++ 表示先将x带入计算再自加1
如果在同一表达式中多次使用 x++ ,ISO/ANSI C++ 保证先使用x原值进行计算,在表达式结束后将x自加。比如:
int x=1;
int y=(x++)+(x++);
执行结束后y值为2,x值为3
因此,在同一表达式中多次使用后置++是安全的,因为结果与计算顺序无关

然而,如果在同一表达式中多次使用 ++x ,ISO/ANSI C++ 并未定义计算顺序,这取决于编译器的实现,比如:
int x=1;
int y=(x)+(++x);
x=1;
int z=(9*x)+(++x);
执行结束后x值为2,这毫无疑问;但y值是不确定的,可能为3或4;z值也是不确定的,可能为11或20
在我的机器中,y=4,z=11。这意味着前式中先计算右边的(++x),后式后计算它
因此,在同一表达式中多次使用前置++是不安全的,除非你有足够证据表明它们的计算顺序

不讨论i++与++i的语言意义。发现了自己一个不好的编程习惯,如果写for循环时,总习惯于:

for(i=0;i<n;i++);

其实这样的写法有一些效率上的缺陷,C++ Primer中有如下解释:

使用前置操作(++i)需要做的工作更少,只需加1后返回加1的操作结果即可。而后置操作(i++)必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于int型对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大的代价。因此,养成使用前置操作这个好习惯,就不必操心性能差异的问题。

不是int o,而是int 0。零

把“operator++”想象成一个函数的名字。
A++相当于A.operator++();
++A相当于::operator++(A);


C++中为什么重载前置++运算符要加个&?
1、因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。举个例:cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<<a<<b<<endl; 就不可以一起写了。如果返回自身的引用 cout<

c语言中前置++、后置++、前置--、后置-- 哪位大神可以帮我解释一下...
前面的++.为自加运算,先赋值,后自己加1,后面的++,先加1,再赋值,--一样

C语言中a++;和a--;连用时代表什么意思?
++(自加),自加又分为前置自加(++a)和后置自加(a++),前置自加先增加再使用,后置自加,先使用再增加,好好理解这两句话哦。--(自减):同理也分前置自减(--a)和后置自减(a--),使用方法同上面的一样;

C语言中 *(p++) 与 *p++ 与 *(--p) ;以及 i++%5= =0 和++i%5= =0的...
后置自加,先取值,再自加。前置自加,先自加,再取值。于是。(p++) 与 *p++ 一样。都是*p的值。 然后p=p+1;(--p) 先自减,p=p-1; 然后再取值。i++%5= =0 先判断 然后i自加。++i%5= =0先自加,然后再判断。

(1\/2)请问一下:在C语言中,定义int a=5,b=20;执行printf("%d\\n",+...
首先,++a和--b分别是前置自加,前置自减;先自加,先自减,然后引用。相当于(a+1)*(b-1)\/5。又因为*和\/是同级运算符,遵循从左向右的先后顺序,且a,b均是整形变量,因此6*21\/5的结果是22。注:舍弃小数。

C语言的运算符问题,前置运算和后置运算我搞不清楚
unsigned char j,k,i=255;j=i++;k=++i;在上述代码中,后置自增自减运算符是在执行完赋值后再执行的,也就是相当于 j=i;i=i+1;而前置自增自减运算符是在赋值前执行的,也就是 i=i+1;k=i;因此,j的值应该是255,k应该是1。include <stdio.h>int main(){ unsigned char j,k,...

初中文言文宾语前置句
在前,宾语在后.可是,在文言文中,这种介宾短语时有将后面宾语提前到介词前面的现象,即介词宾语前置.常见情况有以下几种.(文言文中,常见的介词有“于、以、为、与、从、自、向等)1、疑问代词作宾语,宾语前置.常见的疑问代词有“谁、孰、恶、何、奚、曷、胡、恶、安、焉“等.(1). “臆!微斯人吾谁与归...

c++中前++为什么比后++速度快?
不要问这样的东西 我说有时候 ++i;和i++ 是一样的你相信吗?不要小瞧了编译器 比如gcc 它会自动帮你优化的 所以你在 for里面写i++、和++i效果一样 对于你问的,我的理解是 ++i是自加1;i++是拷贝i 自加1;多了个步骤!所以慢些 我也许理解不好 但,编译器会自动优化不可否认 我用...

c++ 输出中的自增自减,求运行结果的解释?
++x; 或者:x++; 后缀形式。自增自减运算符存在于C\/C++等高级语言中,它的作用是在运算结束前(前置自增自减运算符)或后(后置自增自减运算符)将变量的值加(或减)一。相较于这些语言中的+=和-=运算符,自增运算符更加简洁,且可以控制效果作用于运算之前还是之后,具有很大的便利性。

C语言自加运算符运行优先级问题
"y=x++*x++"、"y=x++*(x++)"、"y=(x++)*(x++)"、"y=(x++)*x++"与"y=(x++)*++x"、"y=x++*++x"、"y=(x++)*(++x)"、"y=x++*(++x)"、"y=++x*x++"、"y=(++x)*x++"、"y=(++x)*(x++)"、"y=++x*(x++)"的不同在于前者表达式中++均是前置的,后者中...

四方区18264425278: c++中前自加和后自加的区别 -
望贵麝珠: 前自加和后自加区别在于运算顺序和结合方向.C/C++中有两种自加运算,其运算符均为++,功能为将运算符自加1. 其中: ++VAR被称为前自加,其后面的变量执行自加操作,其运算为,先执行自加操作,再引用VAR值. VAR++被称为后自...

四方区18264425278: c++中, 前自增和后自增的分别 -
望贵麝珠: 前自增即++i型:先自加后取值 后自增即i++型:先取值后自加 //参考代码如下: #include<stdio.h> int main() {int i=0;while(i++<3)//先比较再自加printf("%d ",i);printf("\n");i=0;while(++i<3)//先自加再比较printf("%d ",i);return 0; } /*运行结果 1 2 3 1 2 */

四方区18264425278: C++ 递增运算符:前置++和后置++的区别 -
望贵麝珠: 可以这样理解.x=i++相当于先把i的值赋给x,i再自加1,x=++i相当于先i自加1再赋给x 比如i=3,x=i++;执行完后x=3,i=4 而x=++i;执行玩后x=4,i=4

四方区18264425278: 请问C++语言中前自增和后自增的区别? -
望贵麝珠: 先增和后增是指在一个表达式中的区别,例如 int a=5 int c=++a; //c=6 int c=a++; //c=5 这是不一样的,因为++a和a++都是一个表达式,而他们表达式的值不同. 但如果不是一个表达式 int a=5; ++a; //无论是++a还是a++都一样 int c=a; //c=6 因为...

四方区18264425278: 在c++中,前置的++与后置的++的区别 -
望贵麝珠: 在C++表达式中 ++x 表示先将x自加1再带入计算;x++ 表示先将x带入计算再自加1 如果在同一表达式中多次使用 x++ ,ISO/ANSI C++ 保证先使用x原值进行计算,在表达式结束后将x自加.比如: int x=1; int y=(x++)+(x++); 执行结束后y值为2,x值...

四方区18264425278: C++中的++自增,前自增和后自增怎么计算 为什么我算出来的结果总是错的 求例子 解释 -
望贵麝珠: #include<iostream.h> void main() {int i,a,b; i=1; a=i++; cout<<a<<i<<endl;//a=1,i=2;后自加运算是先赋值再自加; i=1; b=++i; cout<<b<<i<<endl;//b=2,i=2;前自加是先进行自加运算,再赋值; }

四方区18264425278: C++中前自增和后自增的区别,让我明白就给分!
望贵麝珠: ++num是先加1在赋值,num++是复制完在加1,就是这个意思. 例如j=++i; 就是先把i的值加1了,在赋给j j=i++; 如果不考虑运算符优先级的话就可以理解为:先把i的值赋给J,然后把j的值加1.就等同于(j=i)++; 两种方法在一般情况下是没有什么区别的,但记得在有一种情况下是有区别的,不过一时想不起来........

四方区18264425278: 求解疑:1,c++中前++和后++,怎么理解,如何判断该使用前++或者后++? -
望贵麝珠: 1. 前++后++区别: 2. 单独使用时相同,如:i++ 3. 作为一个值返回时: a=i++ 是先使用,再自加(其自加是在遇到结束标志时才会进行)即a = i;i=i+1; a=++i 是先自加,再使用 即 i=i+1; a= i; 2.函数指针与指针函数 4. 指针函数是一个函数,返回值为指针int * new() {int *pp ;pp= 0;return pp; }5. 函数指针是一个指针,指向一个函数 int xMax(int a,int b) {return a>b?a:b;} int (*xMaxValue)(int a,int b) = xMax

四方区18264425278: c++括号和自加的顺序 -
望贵麝珠: 你要先明白前置++和后置++区别,简单地说,都是P自加1.区别是,P++是执行完后面的语句才加1;而++P就先做P+1才执行后面的语句.

四方区18264425278: C++中,对象后置自加调用的是什么函数? -
望贵麝珠: operator++() 是前置百++operator++(int) 是后置++可以定义参数度,声明成 operator++(int x),但是用不了,因内为不能写 x++2; 这样的---评论中说得对容,可以写 x.operator++(2);

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网