鱼C论坛

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

C题目求解释!

[复制链接]
发表于 2012-7-23 14:08:26 | 显示全部楼层 |阅读模式
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", p, q, i, j);
}


#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--);
}



2个题打印结果求解释!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-23 14:08:27 | 显示全部楼层
  1. /*#include <stdio.h>

  2.   void main()
  3.   {
  4.   int i = 5, j = 5, p, q;

  5.   p = (i++) + (i++) + (i++);        //因为是前置运算 所以 p=5+5+5=15 然后i 自增3次 i=8

  6.   q = (++j) + (++j) + (++j);                //因为是后置运算 这个表达式 q=((++j)+(++j))+(++j) 所以先自增2次j=7  q=7+7=14 然后在自增一次 j=8 所以q=7+7+8=22

  7.   printf("%d, %d, %d, %d", p, q, i, j);        //p=15 q=22 i=8 j=8

  8. }*/


  9. #include <stdio.h>

  10. void main()
  11. {
  12.         int i = 8;

  13.         printf("%d\n", ++i);        //前置运算 所以 先自增 i=9 然后打印9;        i=9

  14.         printf("%d\n", --i);        //前置运算 先自减 i=8 打印 8 ; i=8

  15.         printf("%d\n", i++);        //后置运算 先打印 i的值 8  然后在自增 i=9
  16.                
  17.         printf("%d\n", i--);        //后置运算 先打印 i的值9  然后自减 i=8

  18.         printf("%d\n", -i++);        //后置自增的优先级高于 负号运算符 所以  先取i的值 8 然后求 负值 打印-8  然后i的值自增 i=9

  19.         printf("%d\n", -i--);        //后置自减的优先级高于负号运算符 所以先取i的值9 然后求负值 打印 -9 然后i自减 i=8
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 14:13:54 | 显示全部楼层
你也看到这里了啊。。。同求解啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 14:25:55 | 显示全部楼层
教你一个方法,n=i++与n=++i的区别,你可以在 i 右边加一个右括号,n左边加一个左括号,也就变成了
(n=i)++和(n=++i),也就是i在加加之前赋值还是之后赋值,这样你就能区别清楚了吧。至于为什么q等于22,是因为编译器的原因,具体什么原因我有点忘了,好像小甲鱼在某个视频中讲过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 14:35:20 | 显示全部楼层
i++求运算在自加 ++i  先自加 在运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 14:52:09 | 显示全部楼层
这份自增自减的资料你去看下 会了解的比较深一点
C语言自增自减学习资料
http://115.com/file/c263gvhu#
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 23:38:22 | 显示全部楼层
如果你懂汇编   那就用vc去调试这段代码吧    看看反汇编之后的代码   你就明白了   至于为什么会这样  老实说原因可能有很多啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-24 07:45:05 | 显示全部楼层
其实这个很简单,书本上根本没提起过一个东西,那就是程序运算的时候,会把符号位后移,也就是说如果是(i++)他会变成i()++这个在算法上有写,你深入学习下就明白了,他们解释的只是一个习惯而已,如果你深入了解单片机就很清楚了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 11:05:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-9-10 15:01:56 | 显示全部楼层
哈哈哈 、、还贴子!
http://www.ruiyish.com  万艾可
http://www.zxgrow.com  卡王
http://www.gzkemei.com  基因育根
http://www.dfdzpcb.com  阴茎增大
http://www.jishiyaofang.com  超级P57
http://www.KYKYY.COM  充气仿真娃娃
http://www.jskmvchina.com  怎么样才能生儿子
http://www.cdwucheng.com  脚气的治疗方法
http://www.am688.com  阴茎短小
http://www.jxhaichuan.com  快高
http://www.chxtn.com  wifi 密码破解  

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 20:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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