C++中前自增和后自增的区别,让我明白就给分!
答案:4 悬赏:0 手机版
解决时间 2021-03-20 22:33
- 提问者网友:藍了天白赴美
- 2021-03-20 11:26
C++中前自增和后自增的区别,让我明白就给分!
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-03-20 12:47
++num是先加1在赋值,num++是复制完在加1,就是这个意思.
例如j=++i;
就是先把i的值加1了,在赋给j
j=i++;
如果不考虑运算符优先级的话就可以理解为:先把i的值赋给J,然后把j的值加1.就等同于(j=i)++;
两种方法在一般情况下是没有什么区别的,但记得在有一种情况下是有区别的,不过一时想不起来........
例如j=++i;
就是先把i的值加1了,在赋给j
j=i++;
如果不考虑运算符优先级的话就可以理解为:先把i的值赋给J,然后把j的值加1.就等同于(j=i)++;
两种方法在一般情况下是没有什么区别的,但记得在有一种情况下是有区别的,不过一时想不起来........
全部回答
- 1楼网友:独钓一江月
- 2021-03-20 14:41
这个不难。前自加是在使用这个变量之前加一,其实没有楼主你那样定义的。再说在真正程序里,这个用的也不是很多,一般就是起一个计数器的作用,不用考虑太多
- 2楼网友:三千妖杀
- 2021-03-20 14:29
从汇编的角度上来说,有些编译器的前自加少一条汇编语句,效率稍微好一点,
如果在复杂表达式里,前自加和后自加得到的结果可能会不同,因为变量的前自加在表达式里就生效了,而后自加在表达式运行之后才生效
如果在复杂表达式里,前自加和后自加得到的结果可能会不同,因为变量的前自加在表达式里就生效了,而后自加在表达式运行之后才生效
- 3楼网友:低血压的长颈鹿
- 2021-03-20 13:08
先++和 后++ #include "stdio.h"
int fn(int x,int c)
{ printf("%d %d \n",x,c);
if(x>c)
return 1;
else if(x==c)
return 0;
else return -1;
}
main()
{int a=4,y;
y=fn(a,a++);
printf("%d",y);
}
后加加 输出的是 1; 大于; x大于c;
执行过程: 就说一下:fn(a,a++); ++这个运算符是:右至左结合的;
所以我们就要先执行一下:a++; 这个是把a传给c;C=4;因为a还没有加加呢; 然后再加加(加1);那么a就是=5;而前面的a就是等于5;把这个5传给x;因为a++是先把值传过去的,所以他的值就是原来的值(4);先加加,下面的程序:
#include "stdio.h"
int fn(int x,int c)
{ printf("%d %d \n",x,c);
if(x>c)
return 1;
else if(x==c)
return 0;
else return -1;
}
main()
{int a=4,y;
y=fn(a,++a);
printf("%d",y);
}
先加加 输出的是:0; x等于c;
执行过程:还是说fn(a,++a);
上面已经说过++是右至左结合的; 那么就是先执行:++a; 先把a加1;然后再传给c;那么a=4;再加一就是5; 前面的a跟后面的++a是同一样变量,所以他值也是5; 所以传过就是:5,5;x=5;c=5;所以他们就相等; 这个是我以前写的;
int fn(int x,int c)
{ printf("%d %d \n",x,c);
if(x>c)
return 1;
else if(x==c)
return 0;
else return -1;
}
main()
{int a=4,y;
y=fn(a,a++);
printf("%d",y);
}
后加加 输出的是 1; 大于; x大于c;
执行过程: 就说一下:fn(a,a++); ++这个运算符是:右至左结合的;
所以我们就要先执行一下:a++; 这个是把a传给c;C=4;因为a还没有加加呢; 然后再加加(加1);那么a就是=5;而前面的a就是等于5;把这个5传给x;因为a++是先把值传过去的,所以他的值就是原来的值(4);先加加,下面的程序:
#include "stdio.h"
int fn(int x,int c)
{ printf("%d %d \n",x,c);
if(x>c)
return 1;
else if(x==c)
return 0;
else return -1;
}
main()
{int a=4,y;
y=fn(a,++a);
printf("%d",y);
}
先加加 输出的是:0; x等于c;
执行过程:还是说fn(a,++a);
上面已经说过++是右至左结合的; 那么就是先执行:++a; 先把a加1;然后再传给c;那么a=4;再加一就是5; 前面的a跟后面的++a是同一样变量,所以他值也是5; 所以传过就是:5,5;x=5;c=5;所以他们就相等; 这个是我以前写的;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯