当前位置:首页 » 编程语言 » c语言先加和后加的区别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言先加和后加的区别

发布时间: 2022-06-25 02:29:44

1. 请问 c语言中++a和a++的区别是什么, 不用告诉我是先加后用和先用后加 我知道这个 请举个例子

/*
这个例子主要是考虑到a++和++a的存储问题;
我们知道,对于a++是先将a给表达式再++;
那么这就是需要一个tmp空间来保存++之前
的a!!!但是对于++a是不需要的,因为先
执行++,那么就是直接改a空间内容就好了!
那么我们下面的问题就是这样!
*/
#include <stdio.h>
int main()
{
int a = 4;
/*
解释:下面的答案在Linux和VC下测试是9;
如果这样的形式不好看,那么写成这样就
可以了:a = a + ( a++ );
那么由于a++是先把数放到tmp空间再++;
所以,执行顺序:把后面a放进tmp空间,然后
a的存储空间数++,那么现在a中是5,tmp中是4
最后a = a + tmp;所以最终结果==9
*/
a += ( a++ );
printf("a = %d\n\n", a);

/*
解释:这里和上面的区别就是++先后执行的
问题,执行顺序:先a++,那么此时的a中就是
5了,然后将这个结果也放进一个tmp空间,
最后在相加,那么结果就是:5 + 5 == 10
*/
a = 4;
a += ( ++a );
printf("a = %d\n\n", a);

/*
注意:下面的代码编译是通过不了的哦!为什么?
其实自最开始已经解释了!就是有没有tmp的问题!
注意a++是先把a给表达式,再++,那么对于左边
来说,其实给的存储空间是tmp而并不是a本身,对于
tmp来说是不可以被赋值的,只能是作为输入操作!!
所以。。。
*/
/*
a = 4;
(a++) += a;
printf("a = %d\n\n", a);
*/

/*
这个本质其实也是差不多的;
就是先有了++a放到a中了,那么相当于是a的初
始值是5,然后在执行:a += ( a++ );那么结果
就是11呗,呵呵~
*/
a = 4;
( ++a ) += ( a++ );
printf("a = %d\n\n", a);

return 0;
}

2. C语言中后加加和前加加什么意思

前加加,代表着先运算,后加一,后加加,代表先加一,再进行运算

3. c语言中的"++在前"和"++在后"的区别是什么

++在前是先加1在运算, 在后面是先运算在加1
例子如下。

int i=0;
printf("%d",++i);i加了1才给传递参数,所以输出是1

i=0;
printf("%d",i++)前传递参数,所以还是输出原来的值是0
printf("%d,i) 因为上面那句加了1所以 输出是1

4. 在C语言中,++放在前面和后面有什么区别详细解释please

分两种情况
【1】 作为单独的语句 i++; ++i; 没区别
【2】 在赋值输出等语句中,++放在前面, 先自加,然后在做其他的操作语句
++放在后面则是 先执行其他的操作,后自加

5. c语言++放在前面和后面的区别分析

++在前是先加1在运算, 在后面是先运算在加1 例子如下。 int i=0; printf("%d",++i);i加了1才给传递参数,所以输出是1 i=0; printf("%d",i++)前传递参数,所以还是输出原来的值是0 printf("%d,i) 因为上面那句加了1所以 输出是1

6. C语言中,递增运算符的“前加”与“后加”的疑问

++或者--在前或者在后是不同的,比如说a=b++的执行过程是先执行a=b,再执行b=b+1,而a=++b是先执行b=b+1,再执行a=b(这时候的b的值已经加了1)。
*to++
=
*from++;是执行*to=*from,再执行*to=*to+1和*from=*from+1
*++to
=
*++from;是执行*to=*to+1和*from=*from+1,再执行*to=*from
之所以执行结果一样,是因为先做了string1,这样两个数组都有值了,你将两个函数的位置换一下,就会发现结果不同!!

7. 在C语言里++在前与在后的区别

关于你上面那道题答案的解释:
首先:我敢确认你的答案八成是抄错了,因为p的值应为6。
第二点:++不管在前在后都只能让i自增1。
那么下面我们来将你那个例子改一下:
int
p,i=2;
P=i+(++i+(i++))+i;//上式P=++i+(i++)
P=6
printf("i=%d",&i);
printf("P=%d",&P);
你说现在的P和i分别是多少呢?答案:i=4;P=12;
首先i=4,说明i之前只增加了2次,即++i和i++
第二点:p=12而你上面P=++i+(i++)(P=6),只不过多加了二个i而P值就增加了一倍。我这时想会不会和加的i顺序有关结果我将i放了好几个不同的位置,可结果都一样。
最后一次我将它这样放置:
P=++i+(i++)+i+i=12与P=++i+(i++)=6
比较得出这时的i为3,最后的输出i为4.这样规律就出来了
结论:首先++、--的执行单位是以一个;结尾的语句,当算表达式时首先算里面带有的(i)++(i)、(i)--(i)的运算式,得出当前的i值(如果运算符在前就先将i的值改变,如果i在后就先不改变i的值,等到以一个;结尾的本条语句执行完后再将i的改变),将最后得出i值全部赋给运算式中的i,最后再按运算符的结合性做运算。
如:
int
p,i=2;
int
p=i+(++i)+i++;
//首先算i值,在这一句:++i---->i=3,i++---->i=3(i不改变)
//再将i值用i=3替换掉:即p=3+3+3;
//再做运算将P算出:p=9;
//这句执行完后再将i+1--->i=4

8. c语言中的++在前++在后有什么区别

++在前是先加1在运算, 在后面是先运算在加1
例子如下。

int i=0;
printf("%d",++i);i加了1才给传递参数,所以输出是1

i=0;
printf("%d",i++)前传递参数,所以还是输出原来的值是0
printf("%d,i) 因为上面那句加了1所以 输出是1

9. C语言 自加在前面和在后面有什么区别

在前面是该语句运行前就自加,后面是该语句运行完才自加