鱼C论坛

 找回密码
 立即注册
查看: 2449|回复: 9

c语言,求助!++i和i++的问题。

[复制链接]
发表于 2012-2-25 09:47:50 | 显示全部楼层 |阅读模式
2鱼币
#include "stdio.h"
void main()
{
     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--);
}


最后一个i为什么是-9呢~~ 倒数第二条执行完后,应该是i=-8+1=-7, 到最后一条,-7参与负值运算后应该是7.不解求助。

最佳答案

查看完整内容

#include "stdio.h" int main() { int i=8; printf("%d\n",++i); //i自增i=9再打印 printf("%d\n",--i); //i自减i=8再打印 printf("%d\n",i++); //i打印了8,再加一,i=9 printf("%d\n",i--); //i打印了9,在减一,i=8 printf("%d\n",-i++); //-i打印了-8,i在加一,i=9 printf("%d\n",-i--); //-i打印了-9,i在减一,i=8 return 0; }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-25 09:47:51 | 显示全部楼层
#include "stdio.h"

int main()
{
    int i=8;
  
    printf("%d\n",++i);        //i自增i=9再打印
   printf("%d\n",--i);        //i自减i=8再打印
   printf("%d\n",i++);        //i打印了8,再加一,i=9
    printf("%d\n",i--);        //i打印了9,在减一,i=8
    printf("%d\n",-i++);     //-i打印了-8,i在加一,i=9
    printf("%d\n",-i--);       //-i打印了-9,i在减一,i=8

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-25 10:26:37 | 显示全部楼层
全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
处在同一等级
数明编译器是从右到左来处理的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-25 11:09:54 | 显示全部楼层
-i不等于i=-i;懂?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-25 11:19:22 | 显示全部楼层
可能是这样吧,倒数第二条执行完后,是i+1,不是-i+1,所以是i=8+1,然后i=9咯··········{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-25 15:26:14 | 显示全部楼层
#include "stdio.h"

int main()
{
    int i=8;
  
    printf("%d\n",++i);        //i自增i=9再打印
   printf("%d\n",--i);        //i自减i=8再打印
   printf("%d\n",i++);        //i打印了8,再加一,i=9
    printf("%d\n",i--);        //i打印了9,在减一,i=8
    printf("%d\n",-i++);     //-i打印了-8,i在加一,i=9  //前面没有问题,到这来就看不懂了    printf("%d\n",-i--);       //-i打印了-9,i在减一,i=8   //,i=-8没有错,但是,-8+1不是-7吗,
                                                          为什么是-9


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-25 15:26:51 | 显示全部楼层

#include "stdio.h"

int main()
{
    int i=8;
  
    printf("%d\n",++i);        //i自增i=9再打印
   printf("%d\n",--i);        //i自减i=8再打印
   printf("%d\n",i++);        //i打印了8,再加一,i=9
    printf("%d\n",i--);        //i打印了9,在减一,i=8
    printf("%d\n",-i++);     //-i打印了-8,i在加一,i=9  //前面没有问题,到这来就看不懂了    printf("%d\n",-i--);       //-i打印了-9,i在减一,i=8   //,i=-8没有错,但是,-8+1不是-7吗,
                                                          为什么是-9

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-25 15:28:33 | 显示全部楼层
619494930 发表于 2012-2-25 14:28
#include "stdio.h"

int main()

倒数第二条指令,-8+1为什么不是-7?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-25 20:11:32 | 显示全部楼层
一世芳华 发表于 2012-2-25 15:26
#include "stdio.h"

int main()

(-i++)编译器不会-i为一个整体自增1,只会i变量自增1。此运算符只能用于一个变量。
(a+b)++等都是非法的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-28 10:28:53 | 显示全部楼层
你应该了解你的输入不是独立的,然后带入定义就成
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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