A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小周学诚 中级黑马   /  2013-7-19 10:06  /  1482 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static void Main(string[] args)
        {
            int a = 10;
            a++;
            Console.WriteLine(a);
            ++a;
            Console.WriteLine(a);
            a--;
            Console.WriteLine(a);
            --a;
            Console.WriteLine(a);
           
            
            Console.ReadKey();
        }

结果为11 12 11 10

而网上说的这个
a=10
a++,++a,a--,--a都等于几啊?
答案是10,12,12,10,

解释为
这个就是前缀运算符和后缀运算符的应用。
a=10
所以第一个a++运行时,a的值还是10,当运算结束后,a=11(因为是后缀,所以要运算后再加1)
第二个++a,这时a的值已经是11,再加1为12(因为是前缀,所以要先加1再运算)
第三个,a--,同理了,先运算后减,所以也是12,运算结束后为11
第四个,先减1,再运行,所以是10.
最终的结果为 10,12,12,10

评分

参与人数 1技术分 +1 收起 理由
zhangcheng5468 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
两者出现的答案为什么一样
回复 使用道具 举报
本帖最后由 马晓凤 于 2013-7-19 12:31 编辑

前缀运算符 a++:先自动加1后使用
后缀运算符:++a先使用后加1


  1. static void Main(string[] args)
  2.         {
  3.             int a = 10;
  4.             int a1 = a++;
  5.             Console.WriteLine(a1);//由于是后缀运算符,所以先运算(将10赋值给a1),然后a自动加1变成11,但此时a1为10的值不受影响
  6.             int a2 = ++a;
  7.             Console.WriteLine(a2);//++a 先加1后赋值,a2=11+1
  8.             int a3 = a--;
  9.             Console.WriteLine(a3);//a-- 先赋值后-1; a3=12   ; a=12-1=11</P>
  10.            int a4 = --a;
  11.             Console.WriteLine(a4);//先-1后赋值 a=a-1=11-1=10;a4=a=10</P>
  12.             Console.ReadKey();
  13.         }
  14. 结果 10  12  12 10
  15. static void Main(string[] args)
  16.         {
  17.             int a = 10;
  18.             a++;
  19.             Console.WriteLine(a);//a=a+1=10+1=11
  20.             ++a;
  21.             Console.WriteLine(a);//a=a+1=11+1=12
  22.             a--;
  23.             Console.WriteLine(a);//a=a-1=12-1=11
  24.             --a;
  25.             Console.WriteLine(a);//a=a-1=10;</P>
  26.             Console.ReadKey();
  27.         }
  28. 结果 11 12  11  10
复制代码

评分

参与人数 1技术分 +1 收起 理由
zhangcheng5468 + 1 赞一个!

查看全部评分

回复 使用道具 举报
相信自己的思维   相信自己调试的结果!网络上的信息不是100%的准确
  1. static void Main(string[] args)
  2.         {
  3.             int a = 10;//a=10
  4.             a++;//执行完这一句a=a+1=11
  5.             Console.WriteLine(a); //输出11
  6.             ++a;//执行完这一句a自加1=12
  7.             Console.WriteLine(a); //输出12
  8.             a--;//执行完这一句a=a-1=11
  9.             Console.WriteLine(a);//输出11
  10.             --a;//执行完这一句a自减1 a=a-1=10
  11.             Console.WriteLine(a);//输出10
  12.            
  13.             
  14.             Console.ReadKey();
  15.         }
复制代码
回复 使用道具 举报
把a++和++a当做有返回值的函数运算
a++:
int aPlusPlus(int& a)
{
    int returnVal=a;
    a=a+1;
    return returnVal;
}

++a:
int plusPlusA(int& a)
{
    a=a+1;
    return a
}
回复 使用道具 举报
其实这个前缀、后缀运算符可以这样来理解,a++这个表达式里面,+在后面,所以就理解为把a用了之后再使a自身+1,而++a中,由于+在a前面,因此可以理解为在使用a之前就要使a自身+1
回复 使用道具 举报
实际上一楼说的很清楚了,在此不再解释
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马