黑马程序员技术交流社区

标题: 零基础出现的自增自减问题 [打印本页]

作者: 小卒子    时间: 2016-5-11 16:48
标题: 零基础出现的自增自减问题
#include<stdio.h>
main()
{
   int a = 21;
   int b = 10;
   int c;
   c = a++;
   printf("Line 6 - c 的值是 %d\n", c);
   c = a--  ;
   printf("Line 7 - c 的值是 %d\n", c);
}

求解,谢谢,原因也告知一下,谢了!!
作者: 栗海云    时间: 2016-5-11 17:21
第一个c = 21 第二个c =22
第一个先把a的值赋给c 再自增
第二个先把a自增后的值赋给c 再自减
作者: 小卒子    时间: 2016-5-11 17:39
如果还有第三个是不是先把a的值自减后的值赋值给c??
作者: 小卒子    时间: 2016-5-11 18:20
栗海云 发表于 2016-5-11 17:21
第一个c = 21 第二个c =22
第一个先把a的值赋给c 再自增
第二个先把a自增后的值赋给c 再自减 ...


如果还有第三个是不是先把a的值自减后的值赋值给c?
作者: Nevergrowold    时间: 2016-5-11 20:46
c=a++ ,其中a++是个表达式,意思是把a的值取出然后赋给a++这个表达式,a++的值就是21  。此时c=21 , 由于a++,是一个自增运算,所以a的值,会变成21+1=22 。所以第一次printf C=21

完了运行到c=a--; 同理 把a的值22 赋值给c ,c=22  第二次printf  C=22;

无论是a++;++a(两个都是自增运算,a的值最终都加了1);还是 a--; --a (都是自减元算,a最终值减1) 这四个运算 ,a的值都会变化

以上是我的理解,不知道有没有错

作者: 时钟滴滴答    时间: 2016-5-11 20:59
同问
作者: 栗海云    时间: 2016-5-12 00:19
小卒子 发表于 2016-5-11 18:20
如果还有第三个是不是先把a的值自减后的值赋值给c?

没错 是这样的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2