创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

核心区别点是:i++有中间保存的原因。
- #include <stdio.h>
-
- int add1()
- {
- int i=0;
- #if 1
- printf("add1 = %d\n", (i++ + i++));
- printf("i =%d\n", i);
- i =0 ;
- printf("add2 = %d\n", (i++ + ++i));
- printf("i =%d\n", i);
- #endif
- i =0;
- printf("add3 = %d\n", (++i + ++i));
- printf("i=%d\n", i);
-
-
- return 0;
- }
-
- int main(void)
- {
- int i = add1();
-
- printf("main i= %d\n", (i++));
-
- return 0;
- }
- mrlee@mrlee-virtual-machine:/mnt/hgfs/project/visual_gateway/software/src_intra_20220618/test/v1/test/xx3/test$ ./a.out
- add1 = 1
- i =2
- add2 = 2
- i =2
- add3 = 4
- i=2
- main i= 0
解析:
结合第一部分看:举例i++返回为temp, ++i返回i,只是为了区别
(1)printf("add1 = %d\n", (i++ + i++));
![]()
(2)printf("add2 = %d\n", (i++ + ++i));
![]()
(3)printf("add3 = %d\n", (++i + ++i));
![]()
(4)printf("main i= %d\n", (i++));
之前返回值i=0;
此时,结果也为0.
1.demo
- #include <stdio.h>
-
- int add1()
- {
- int i=0;
- printf("add1 = %d\n", (i++ + i++)); //打印等于1, i=2
- printf("i =%d\n", i);
- printf("add2 = %d\n", (i++ + ++i)); //打印等于6, i=4
- printf("i =%d\n", i);
- printf("add3 = %d\n", (++i + ++i)); //打印等于12, i=6
- printf("i=%d\n", i);
-
- return 0;
- }
-
- int main(void)
- {
- int i = add1();
- printf("main i= %d\n", (i++));
- return 0;
- }
