鱼C论坛

 找回密码
 立即注册
查看: 3991|回复: 8

跪求后两个输出得来的方式

[复制链接]
发表于 2012-7-23 07:05:28 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
int 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--);
return 0;
}

最佳答案

查看完整内容

你的程序等价于:
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-23 07:05:29 | 显示全部楼层
你的程序等价于:
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int i=8;
  5.         //printf("%d\n",++i);
  6.         ++i;
  7.         printf("%d\n",i);
  8.         //printf("%d\n",--i);
  9.         --i;
  10.         printf("%d\n",i);
  11.         //printf("%d\n",i++);
  12.         printf("%d\n",i);
  13.         ++i;
  14.         //printf("%d\n",i--);
  15.         printf("%d\n",i);
  16.         --i;
  17.         //printf("%d\n",-i++);
  18.         printf("%d\n",-i);
  19.         ++i;
  20.         //printf("%d\n",-i--);
  21.         printf("%d\n",-i);
  22.         --i;
  23.         return 0;
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 08:16:07 | 显示全部楼层
9,8,8,9,-8,7.这是我的理解的答案,结果我用VS2010运算出来的结果是9,8,8,9,-8,-9
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-23 08:41:40 | 显示全部楼层

是啊 不知道怎么搞的 算出来的结果不是想象中的 不知道哪错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 09:40:07 | 显示全部楼层
个人建议你用VC进行单步调试,可以看到i值的变化和原始I值。
首先声明下:++i,是先加1,再进行运算;i++,是先运算再加1,i--和--i同理。
#include<stdio.h>
int main()
{
        int i=8;//i的初值为8
        printf("%d\n",++i);//i 先+1,再进行打印,该语句的结果为9,i由原来的初值8变为了9  
                                          // i 进行了++i 的运算;
        printf("%d\n",--i);//现在先-1,通过上一句后,i 的值变为了9,-1后打印的结果为8,
                                         //i 的值为8;
        printf("%d\n",i++);//现在是先运算,故语句的打印结果为8,然后i 的值+1,又变为了9
        printf("%d\n",i--);//现在是先运算,故语句的打印的就是上一句i 的值9,然后i -1,i 变为了8
        printf("%d\n",-i++);//同理可知这句打印的就是-8;i = 9
                printf("%d\n",-i--);//这句打印的就是- 9;  i = 8;  
        return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-23 09:48:09 | 显示全部楼层
收藏点滴 发表于 2012-7-23 09:40
个人建议你用VC进行单步调试,可以看到i值的变化和原始I值。
首先声明下:++i,是先加1,再进行运算;i++,是 ...

太谢谢 你了:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 09:55:16 | 显示全部楼层
不谢,大家相互学习嘛!我也初学,呵呵。小甲鱼非常幽默,有点黑色幽默。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 10:22:52 | 显示全部楼层
本帖最后由 yaobj 于 2012-7-23 10:35 编辑

这程序其实没多大意义,只要搞清楚 i++ 和 ++i 的异同就不难理解啦 ,以下是我对这程序的分析,希望能帮到你

1. 该程序在 VC ++ 6.0 中运行的结果是 :

        9
        8
        8
        9
        -8
        -9
        Press any key to continue


2.分析 :

首先 :i == 8

语句1. ++i 此时 i == 9
         ( 因为表达式 (++i) 是先加再赋值, 所以该表达式中 i 的值是 (i+1) 之后的值 所以 ++i 之后 i 在这等于 9 )

语句2. --i 此时 i == 8
         ( 因为表达式 (--i) 是先加再赋值, 所以该表达式中 i 的值是 (i-1) 之后的值,因为上一条语句时i的值==9,所以 --i 之后 i 在这等于 == 8 )

语句3. i++ 此时 i == 8
         ( 因为表达式 (i++) 是先赋值再加, 所以该表达式中 i 的值是 (i+1) 之前的值,由于语句2之后,i的值为8,所以在这表达式中i的值仍为8,在这语句执行完之后i的值就是9了 )

语句4. i-- 此时 i == 9
         ( 因为表达式 (i--) 是先赋值再减, 由于语句3之后,i的值为9,所以该表达式中 i 的值是 (i-1) 之前的值,所以i的值仍为9,在这整条语句执行完之后i的值就是8了 )

语句5. -i++ 此时 i == -8
         ( 因为在语句4完成后,i的值为8,但在该语句中,表达式(i++)是先赋值再加,所以此时i的值仍然等于8,所以该表达式(-i++)中i的值为-8;在该条语句执行完成后,i的值才为-9 )

语句6. -i-- 此时 i 5完成后,i的值为-9,但在该语句中,表达式(i--)是先赋值再加,所以此时i的值仍然等于-9,所以该表达式(-i++)中i的值为-9;在该条语句执行完成后,i的值才为 8 )
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-24 21:58:59 | 显示全部楼层
我发现 甲鱼哥  这个网页 做的  非常的大众 化3       !! 非常的 喜欢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-14 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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