?èr? 发表于 2013-5-3 09:37:54

自增自减运算符弄不懂啦求大神。。。。

#include<stdio.h>                                                                                             
int main(void)
{
int a=9,b=19;
int i,p;
i=a++;
p=b--;
printf("i 的值为:%d\n",i);
printf("p 的值为:%d\n",p);
return 0;
}


i的值和p的值还是原值不变那为什么这个结果是12呢 不是11呢?

#include<stdio.h>
int main(void)
{
int a;
int i=5;
a=(i++,++i,i+5);
printf("a 的值为:%d\n",a);
return 0;
}


不能说_-的秘密 发表于 2013-5-3 09:51:33

第一个i的值和p的值应该是不变的啊!

252013680 发表于 2013-5-3 09:55:01

p++在同一行代码使用还是P但在
在紧接的下一次使用开始P=P+1;

我是师兄 发表于 2013-5-3 10:00:01

a=(i++,++i,i+5);
第一个 i++ 之后 i 的值是6
第二个 ++i 之后 i 的值是7
7+5 == 12
就这么简单

?èr? 发表于 2013-5-3 10:00:22

a=9,b=19;

i=a++i还等于9
p=b--p还等于19

那为什么int i=5;
a=(i++,++i,i+5);却等于12不是11呢?

不能说_-的秘密 发表于 2013-5-3 10:02:38

第一个的i和p的值是不变的因为你i=a++;是先把a的值赋给i后然后a再自增1,所以i的值为9,同理b的值为19;
第二个首先执行i++后;i值为6,然后再++i(使用前加1)此时为7,然后加5为12;
建议楼主单步调试,可以清晰的看到自增后的值;{:5_108:}

?èr? 发表于 2013-5-3 10:05:22

奥这样啊 谢谢啊 嘿嘿 我初学呢以后多多指教啊

子乔爱小杉 发表于 2013-5-3 17:20:38

加加在前,先加后用;加加在后,先用后加

☆小韦QQ 发表于 2013-5-4 23:15:34

强烈支持楼主ing……

vivi的哥 发表于 2013-5-8 13:08:29

先复制再自加/减
a=(i++,++i, i+5)
从左至右i=6, i=7, 所以i+5 = 12

Jiuaim 发表于 2013-5-8 15:18:11

我只是路过打酱油的。

小靚同学Leon 发表于 2013-5-8 18:23:41

楼上的已经回答过了

姗姗莱咫 发表于 2013-5-9 13:00:52

那里会进行两次自加的

阔怀 发表于 2015-8-24 11:27:10

{:1_1:}
页: [1]
查看完整版本: 自增自减运算符弄不懂啦求大神。。。。