社区
C#
帖子详情
为什么 i 仍旧是 5 ,已经 ++ 了 呀
iamsea11
2003-08-20 10:57:32
int i=5;
int i=i++;
Console.WriteLine((i);
i++ 后 应该 i =6
...全文
97
10
打赏
收藏
为什么 i 仍旧是 5 ,已经 ++ 了 呀
int i=5; int i=i++; Console.WriteLine((i); i++ 后 应该 i =6
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AI魔法探索家|陈工聊AI
2003-08-20
打赏
举报
回复
i=i++;
first do i++
then i is 6
but i=i++ is to give the original i to i
that is 5
01101230
2003-08-20
打赏
举报
回复
反汇编的情况:
int i=5;
0000007c mov esi,5
i=i++;
00000081 mov ebx,esi
00000083 inc esi
00000084 mov esi,ebx
System.Console.WriteLine(i);
00000086 mov ecx,esi
可以看到实际上i原来的值被放到ebx里保存起来了。然后执行了i++;此时i=6;最后执行
mov esi,ebx 才最后把保存起来的值(5)又还原给等号左边的的变量(i)所以i=5
snla
2003-08-20
打赏
举报
回复
改为++i
panyee
2003-08-20
打赏
举报
回复
int j = i++; //这时肯定是5
如果
i++;//先自加
int j = i;//这时才是6
jiezhi
2003-08-20
打赏
举报
回复
++在前則先加,再使用﹔++在后,則先使用再加
jiezhi
2003-08-20
打赏
举报
回复
++在前則先加,再使用﹔++在后,則先使用再加
csdn_bob
2003-08-20
打赏
举报
回复
i=i++;
这一句相当于
i=i+1;
i=5;
因为它是先取得i=5,然后i自加=6,然后将取出的5给i!
BeyondLove2000
2003-08-20
打赏
举报
回复
首先,不能再定义int型的i;
其次,i++; 即可不必i=i++; =比++有限级高,赋值后才++的,所以值不变。
rouser
2003-08-20
打赏
举报
回复
為什麼會出現兩次定義?
vikey
2003-08-20
打赏
举报
回复
同意 panyee(快乐王子)
01101230(叶开)用的反汇编,呵呵
a
++
与
++
a能否作为左值
1)首先说左值和右值的定义: 变量和文字常量都有存储区,并且有相关的类型。区别在于变量是可寻址的(addressable)对于每一个变量都有两个值与其相联: 1).它的数据值,存储在某个内存地址中。有时这个值也被称为对象的右值(rvalue,读做are-value).我们也可认为右值的意思是被读取的值(read value)。文字常量和变量都可被用作右值。 2).它的地址值——即存储数据
【C
++
】i
++
=5编译报错,i
++
不能作为左值的原因
左值与右值 首先,我们需要明确左值与右值的定义。 一个简单的理解就是,对于每个变量,均是可寻址的,均与两个值有关: 它的数据值——存储在某个内存空间中,不占有确定位置的表达式,被称为右值(rvalue)。 它的地址值——存储数据值的内存的地址,占有确定的位置,被称为左值(lvalue)。 i
++
不能作为左值的原因 int i = 0; i
++
=5;编译报错! 由于i
++
的内部实现是创建...
关于i
++
是不是原子操作的问题
i
++
是不是原子操作?这个看似简单的问题,实则背后有很深的坑,今天就来踩踩这个坑。 之所以要讨论某个操作是不是原子操作,是因为一旦确认某个操作是原子操作的话,就不用为了去保护这个操作而加上昂贵又要耗费性能的锁。而在单核CPU中,中断只会发生在指令间,可以把能够在一个指令间完成的操作,看成是原子操作。 处理器虽然会自动保证基本的内存操作的原子性,但对于多核CPU的复杂的内存操作,处理器是不能保证...
详解int i =
++
i+i
++
之前一直有这种题,只知道
++
i,运算前加1,i
++
运算后加1,但具体他是怎么实现的起始一直不太清除,今天闲来无事,通过翻看字节码,彻底将这类题映在脑子里。 先上代码 int i = 1; i =
++
i+i
++
; 此时i的值是多少呢?在之前遇到这种题的时候,很多时候我都是靠猜得到答案,今天通过翻看指令,总算理解了它的过程。 指令 0 iconst_1 将int型为1的变量压入栈 1 istore_1 将栈顶的int型存入第二个本地变量 2 iinc 1 by 1 将局部表中的位置的
i
++
和
++
i的真正区别
记得刚开始学编程的适合是从c语言开始的,还是看的谭浩强的那本书,上面对介绍i
++
和
++
i的区别如下: i
++
是先赋值,然后再自增;
++
i是先自增,后赋值。 用代码表示就是: 若 a = i
++
; 则等价于 a=i;i=i+1; 而 a =
++
; 则等价于 i=i+1;a=i; 那么事实真是这样么,只是曾经我深信不疑,但是直到我看到下面这段代码:@Test public void test(
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章