鱼C论坛

 找回密码
 立即注册
查看: 2863|回复: 16

-- , ++这东西搞糊涂了

[复制链接]
发表于 2013-2-15 19:10:09 | 显示全部楼层 |阅读模式
1鱼币
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);

++8=9很对   --8怎么程序显示等于8   8-1=8?
8++=8     那8--应该也是=8     程序显示=9
-8++=-8      -8--=-9?
我用的是简化版  请问是不是程序出问题了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-15 19:49:50 | 显示全部楼层
你的太乱了
我一步步来       先是    ++i     前置   先运算后输出   运算:8+1==9    输出 9    (注意,这时i==9了)
                      然后     --i      前置   先运算后输出   运算:9-1==8     输出8      (这时i==9)
                      然后     i++    后置   先输出i再运算   输出8        运算: 8+1==9      (这时i==9)
                      然后     i--      后置   先输出i再运算    输出9         运算:9-1==8        ( 这时i==8)
                      然后     -i++   后置   先输出i再去算    输出-8         运算:-8+1==-9     (这时i==-9)
                      最后一步   -i--   也是后置    先输出     输出 -9       运算 :   -9-1==-8     (这时因为没有printf 输出语句i最终值是-8    没有输出)     所以是  9   8   8    9   -8   -9
   
         
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-15 19:55:47 | 显示全部楼层
从第二句语句开始,++i=9  ,接着--i=8没错啊 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-15 23:44:41 | 显示全部楼层
本帖最后由 牡丹花下死做鬼 于 2013-2-15 23:47 编辑

首先 i =8
++i   先 i+1 i=9 输出9
--i  先 i-1 i=8 输出8
i++ 先输出 i = 8 再计算 i = 9
i-- 先输出i=9 在计算 i = 8
-i++先输出 i=-8 在计算 i=-9
-i-- 先输出 i = -9 在计算 i=8
所以输出应该是 9  8 8 9 -8 -9
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-16 00:12:44 | 显示全部楼层
++8=9很对   --8怎么程序显示等于8
这句就有问题,进行运算的是i,不是8,只不过i的初始值为8
所以++i为9,这时候i为9,--i自然为8
至于8++=8     那8--应该也是=8 也是错的
i++为8,那是显示的时候为8,在显示完之后i自增为9
随后i--也是先显示9,然后i自减为8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-16 00:14:30 | 显示全部楼层
自增自减操作的是变量,不是常量
就像你的程序里的,操作的是i,不是对8进行操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-16 19:50:56 | 显示全部楼层

话说  小布丁大哥  为什么 你身为超级版主 技术值只有 1  难道是去换鱼币啦??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-16 19:53:20 | 显示全部楼层
牡丹花下死做鬼 发表于 2013-2-16 19:50
话说  小布丁大哥  为什么 你身为超级版主 技术值只有 1  难道是去换鱼币啦??

回答问题不多哈~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-17 09:38:59 | 显示全部楼层
你定义的int i是全局变量,当你执行++i的时候,全局变量的值就变为9了。下一次进行的运算就是按照i=9来计算的。所以依次类推。自增自减符号在左边的时候是先运算后打印。在右边的时候是先打印再运算...
第一个是++i
第二个是--(++i)
第三个是(--(++i))++
依次类推.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-18 21:30:38 | 显示全部楼层
灰烬 发表于 2013-2-15 19:49
你的太乱了
我一步步来       先是    ++i     前置   先运算后输出   运算:8+1==9    输出 9    (注意, ...

倒数第二步计算完i等于9,不是-9.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-18 22:03:18 | 显示全部楼层
执行 ++或者-- 的时候 i的值会变的 要打印你那个 必须每句printf前面都初始化i=8;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-18 23:01:46 | 显示全部楼层
灰烬 发表于 2013-2-15 19:49
你的太乱了
我一步步来       先是    ++i     前置   先运算后输出   运算:8+1==9    输出 9    (注意, ...

    第二个然后     --i      前置   先运算后输出   运算:9-1==8     输出8      (这时i==9)????i==9?????????????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-18 23:36:48 | 显示全部楼层
本帖最后由 feizixiao 于 2013-3-18 23:39 编辑

int i=1;
printf("%d\n",++i); //++在前,先计算++之后的值,再输出.   这时候i=2
printf("%d\n",i++);  //++在后,先输出,在计算++的值   这时候i=2                 
printf("%d\n",i);     //输出i=3
//--的话  应该会推论了吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-5-30 23:33:35 | 显示全部楼层
每次++ --后i的值都变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-14 12:11:04 | 显示全部楼层
围观。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-26 10:20:43 | 显示全部楼层
帮顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-27 08:41:31 | 显示全部楼层
慢慢理解就好!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 10:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表