鱼C论坛

 找回密码
 立即注册
查看: 1734|回复: 10

菜鸟求助C语言零基础入门第二章最后一节的程序

[复制链接]
发表于 2015-2-16 18:36:24 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
  void main()
{
          int i=5,j=5,p,q;
          p=(i++)+(i++)+(i++);
          q=(++j)+(++j)+(++j);
          printf("%d,%d,%d,%d\n",p,q,i,j);
  }


我自己读程序得出来的结果是:P=18,i=8,q=21,  j=8;


运行结果却是:p=15 , i=8  ,q=22, j=8;

真的想不懂,求各位解答,谢谢。


最佳答案

查看完整内容

p=(i++)+(i++)+(i++);这句应该可以理解吧?I++是使用后再++,所以就是3个5相加,结果当然是15了,加完以后,I的值是加了3次,所以为8. q=(++j)+(++j)+(++j);这句是因为编译器问题,VC++会自动优化,在反汇编里你会看到,是把前两个++J先inc了(就是自加1)然后再加最后一个++J,这样结果就是7+7+8=22. 你如果学会汇编就不会有这个疑问了,0基础汇编里还专门讲了这个问题,可巧我知道了,把分给我吧:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-16 18:36:25 | 显示全部楼层
p=(i++)+(i++)+(i++);这句应该可以理解吧?I++是使用后再++,所以就是3个5相加,结果当然是15了,加完以后,I的值是加了3次,所以为8.
q=(++j)+(++j)+(++j);这句是因为编译器问题,VC++会自动优化,在反汇编里你会看到,是把前两个++J先inc了(就是自加1)然后再加最后一个++J,这样结果就是7+7+8=22.
你如果学会汇编就不会有这个疑问了,0基础汇编里还专门讲了这个问题,可巧我知道了,把分给我吧:titter:

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
badkk + 1 + 1

查看全部评分

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

使用道具 举报

发表于 2015-2-16 18:43:32 | 显示全部楼层
编译器的原因 反编译就知道了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-16 22:45:19 | 显示全部楼层
路过,呵呵呵。我正准备学C,先学的汇编打基础。等我学汇编学腻了就来回答你的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-2-23 14:52:14 From FishC Mobile | 显示全部楼层
貌似好高深的样子来自: iPhone客户端
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-1 12:11:30 | 显示全部楼层
编译器在读程序时是从上往下顺序读取,例如读完p=(i++)+(i++)+(i++);
i的只会别保留到下一行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-1 18:37:18 | 显示全部楼层
这个,我前些天也搞不懂;
后来发现这个是无解的(没有标准答案);
现实中,不会遇到这样的应用,不必究结在这里了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-2 11:04:33 | 显示全部楼层
#include<stdio.h>
void main()
{
        int a=5;
        printf("%d\n",a++);/*此处先参与运算后自增1,所以显示为5,但下次使用变量a时,值为6*/

        printf("%d\n",a--);/*此处先运算后自减1,显示为6,下次使用a=5*/

        printf("%d\n",++a);/*此处先自增1后参与运算,显示为6,值为6*/

        printf("%d\n",--a);/*显示为5*/

        printf("%d\n",-a++);/*显示为-5,a值由5自增1成为6*/

        printf("%d\n",-a--);/*显示为-6,a值由6自减为5*/

        printf("%d\n",a);/*显示为5*/
}
这样说懂吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-2 14:14:42 | 显示全部楼层

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

使用道具 举报

发表于 2015-3-2 15:48:28 | 显示全部楼层
这个与编译器有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-3-3 15:52:00 | 显示全部楼层
应该是你的编译器有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 17:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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