12、自增(++) 与 自减 ( - -)、

前言

狄泰软件唐老师的个人学习笔记
参考了C语言中文网,链接如下;
http://c.biancheng.net/cpp/html/3097.html

1、++ 与 - -

  • 前置
    - 变量自增(自减)
    - 取值
  • 后置
    - 取值
    - 变量自增(自减)

实验:说明前置与后置的区别

#include 
int main()
{int a = 10, b = 20, c = 30, d = 40;int a1 = ++a, b1 = b++, c1 = --c, d1 = d--;printf("a=%d, a1=%d\n", a, a1);	//11,  11//先执行 ++a,结果为 11,再将 11 赋值给 a1,所以 a1 的最终值为11。//而 a 经过自增,最终的值也为 11。printf("b=%d, b1=%d\n", b, b1); //20,  21// b 的值并不会立马 +1,而是先把 b 原来的值交给 b1,然后再 +1。b 原来的值为 20,//所以 b1 的值也就为 20。而 b 经过自增,最终值为 21。printf("c=%d, c1=%d\n", c, c1); //29,  30//先执行 --c,结果为 29,再将 29 赋值给c1,//所以 c1 的最终值为 29。而 c 经过自减,最终的值也为 29。printf("d=%d, d1=%d\n", d, d1); //39,  40//d的值并不会立马减 1,而是先把d原来的值交给 d1,然后再-1。//d 原来的值为 40,所以 d1 的值也就为 40。而 d 经过自减,最终值为39return 0;
}

而且需要分清的是,前置和后置,你不赋值给别人,没有区别,比如下面

#include int main()
{int i = 0;int y = 0;i++;++y;printf("%d\n", i);	//	1printf("%d\n", y);	//	1
}

2、问题

自增与自减不要与其他运算符混合使用,不同的编译器结果可能不同,这点是唐老师说的,涉及不同编译器用汇编代码的处理不同,导致结果不同,我也没听懂咱还是就分开写吧,别头铁了

实验

#include 
int main()
{int a = 12, b = 1;int c = a - (b--);  // 11//会先进行a-b运算,结果是 11,然后 b 再自减,就变成了 0;//最后再将a-b的结果(也就是11)交给 c,所以 c 的值是 11。int d = (++a) - (--b);  //14//对于d=(++a)-(--b),a 会先自增,变成 13,然后 b 再自减,变成 -1,//最后再计算13-(-1),结果是 14,交给 d,所以 d 最终是 14printf("c=%d, d=%d\n", c, d);return 0;
}
#include int main()
{int i = 0;int r = 0;r = (i++) + (i++) + (i++);printf(" i = %d\n r = %d\n ", i, r);r = (++i) + (++i) + (++i);printf("i = %d\n r = %d\n ", i, r);return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部