八神庵 发表于 2013-2-15 19:10:09

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

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?
我用的是简化版请问是不是程序出问题了{:5_94:}

灰烬 发表于 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
   
         

Gamsen 发表于 2013-2-15 19:55:47

从第二句语句开始,++i=9,接着--i=8没错啊 。

牡丹花下死做鬼 发表于 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
所以输出应该是 98 8 9 -8 -9

小布丁 发表于 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

小布丁 发表于 2013-2-16 00:14:30

自增自减操作的是变量,不是常量
就像你的程序里的,操作的是i,不是对8进行操作

牡丹花下死做鬼 发表于 2013-2-16 19:50:56

小布丁 发表于 2013-2-16 00:14 static/image/common/back.gif
自增自减操作的是变量,不是常量
就像你的程序里的,操作的是i,不是对8进行操作

话说小布丁大哥为什么 你身为超级版主 技术值只有 1难道是去换鱼币啦??

小布丁 发表于 2013-2-16 19:53:20

牡丹花下死做鬼 发表于 2013-2-16 19:50 static/image/common/back.gif
话说小布丁大哥为什么 你身为超级版主 技术值只有 1难道是去换鱼币啦??

回答问题不多哈~

季末、梨花雨落 发表于 2013-2-17 09:38:59

你定义的int i是全局变量,当你执行++i的时候,全局变量的值就变为9了。下一次进行的运算就是按照i=9来计算的。所以依次类推。自增自减符号在左边的时候是先运算后打印。在右边的时候是先打印再运算...
第一个是++i
第二个是--(++i)
第三个是(--(++i))++
依次类推.....

迷路的国王 发表于 2013-3-18 21:30:38

灰烬 发表于 2013-2-15 19:49 static/image/common/back.gif
你的太乱了
我一步步来       先是    ++i   前置   先运算后输出   运算:8+1==9    输出 9    (注意, ...

倒数第二步计算完i等于9,不是-9.

風言瘋語 发表于 2013-3-18 22:03:18

执行 ++或者-- 的时候 i的值会变的 要打印你那个 必须每句printf前面都初始化i=8;

l万lin 发表于 2013-3-18 23:01:46

灰烬 发表于 2013-2-15 19:49 static/image/common/back.gif
你的太乱了
我一步步来       先是    ++i   前置   先运算后输出   运算:8+1==9    输出 9    (注意, ...

    第二个然后   --i      前置   先运算后输出   运算:9-1==8   输出8      (这时i==9)????i==9?????????????????

feizixiao 发表于 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
//--的话应该会推论了吧?

刺客信条 发表于 2013-5-30 23:33:35

每次++ --后i的值都变化

hahah 发表于 2013-6-14 12:11:04

围观。。。。。。。

阔怀 发表于 2015-8-26 10:20:43

帮顶

wanggeba 发表于 2015-8-27 08:41:31

慢慢理解就好!
页: [1]
查看完整版本: -- , ++这东西搞糊涂了