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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mdb 中级黑马   /  2014-3-29 18:23  /  1838 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 mdb 于 2014-3-29 22:21 编辑
  1.             int i = 1;
  2.             int a = (i++) + (+ +i);
  3.             Console.WriteLine("a:" + a);
  4.             Console.WriteLine("i:" + i);
复制代码

结果是
a:3
i:2
为什么呢,谁能解释下运算过程?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

9 个回复

倒序浏览
1. i++表达式1的值是i本身为1,++i表达式2是i先进行加一运算,然后再赋值给表达式2,最后表达式1与表达式2的和为3,也就是a的值为3;
2.Console.WriteLine("i:" + i);还没有跳出main函数体,所以此时的i 的值是2。
回复 使用道具 举报
许庭洲 发表于 2014-3-29 18:49
1. i++表达式1的值是i本身为1,++i表达式2是i先进行加一运算,然后再赋值给表达式2,最后表达式1与表达式2 ...

我有点不明白的是i++为什么在执行int a = (i++) + (+ +i);这句运算代码之后i没有再自增?
回复 使用道具 举报
mdb 发表于 2014-3-29 18:58
我有点不明白的是i++为什么在执行int a = (i++) + (+ +i);这句运算代码之后i没有再自增? ...

我想你是不明白为什么i++后i的值为什么没增加1吧?主要是他们都在一个表达式中,这个表达式在调用i的时候,它的值还是1。i++是运算后再加1,而++i调用时i的值也是1(注意不是调用i++后的值,而是i的值),先加1后再运算,++i的值是2。所以a的值是1+2=3,而i的值在经过a的表达式后(也就是i++运算后)会自增1,所以此时i的值是2

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
是++i,不是+ +i,中间不要有空格,你这样属于取正号.
这式子要从右往左算.
结果a=2+2=4,i=3.
回复 使用道具 举报
zhl406893081 发表于 2014-3-29 20:07
是++i,不是+ +i,中间不要有空格,你这样属于取正号.
这式子要从右往左算.
结果a=2+2=4,i=3. ...

太对了,看了很久我才发现...
回复 使用道具 举报
i++与++i都是同一级别。结果后,i都是自增一,所以为2
回复 使用道具 举报
好经典的空格······
回复 使用道具 举报
前加的话是要先加1后加是要过了分号再加1
回复 使用道具 举报
你第二行代码++号写错了,不能有空格符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马