鱼C论坛

 找回密码
 立即注册
查看: 3464|回复: 4

自减自增运算的问题,-i++,-i- -,是怎么运算的,代码如下

 关闭 [复制链接]
发表于 2011-7-30 22:12:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 weixu416 于 2011-8-1 10:41 编辑

#include <stdio.h>
void main ()
{
    int i=8;
    printf("%d\n",++i);  /*9*/
        printf("%d\n",--i);  /*8*/
        printf("%d\n",i++);  /*8*/
        printf("%d\n",i--);  /*9*/
        printf("%d\n",-i++); /**/
        printf("%d\n",-i--); /**/
}

前 四个,我知道怎么算,可是后面那2个, -i++,-i--,不知道怎么算,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-31 05:55:11 | 显示全部楼层
++, -- 优先级高
也就是先 ++ 或 -- , 再 求负数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-31 08:53:30 | 显示全部楼层
      1.  printf("%d\n",++i);  /*9*/
      2.  printf("%d\n",--i);  /*8*/
      3.  printf("%d\n",i++);  /*8*/
      4.  printf("%d\n",i--);  /*9*/
      5.  printf("%d\n",-i++); /**/
      6.  printf("%d\n",-i--); /**/
++i  :先将i 的值加1 ,然后再取 i 的值作表达式的值
i++  :先取i 的值作表达式的值,然后再将i 的值加 1;
-i++ : 相当于-(i++)
1 执行后:表达式的值为9;i=9;
2 执行后:表达式的值为8;i=8;
3 执行后:表达式的值为8;i=9;
4 执行后:表达式的值为9;i=8;
5 执行后:表达式的值为-8;i=9;
6 执行后:表达式的值为-9;i=8;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-31 09:48:22 | 显示全部楼层
我是这么记的:

++i  :  “+”号在 i 前面,先看到的是"+",所以 i 先自加, 再运算;

i++ :  "+"  号在 i 后面,先看到的不是“+”,所以先运算,再自加;

至于运算优先级,就查查书吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-31 11:05:05 | 显示全部楼层
2楼的说法有问题。
自增(处减)与负号运算符的优先级是相同的。它们都是自右至左的结合性。
因此,-i++和-i--相当于,-(i++)和-(i--),即先计算i++或i--,再计算表达式的值。比如i=3,求-i++。根据i++先使用i,再自增原则,故先取i的值3,输出-i的值-3,i再自增运算为4(切记这里i的值为4,不是-4)。

可参看谭浩强老师的《C程序设计》第二版第24页。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-8 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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