Schneidershop 发表于 2010-2-25 23:30:33

C语言入门 求教

您好,我是个C语言初学者,碰到下面一个程序,不知道如何分析,请多指教,不胜感激

main()
{int i=3,k=0;

k=i++*++i+i--*--i;

printf("k=%d",k);
}

该程序运行结果为18 ,我不知道该程序的运算是如何进行的,如果可以的话,是否可以详细的帮我解答一下呢,不胜感激,再次拜谢了

smile.dan 发表于 2010-2-25 23:41:32

入错门了

Schneidershop 发表于 2010-2-25 23:42:44

对不住,我也是有病乱投医,希望能碰上救星...

nuno 发表于 2010-2-26 00:52:45

第一先搞明白++,--:
i++是先用i然后再把i加1;
++i是先加1再使用i;
--与++类似,只是把加换成减
第二搞清楚运算符优先级:
++,--运算符比*运算符级别高
得先++,--后在*,*的级别又比+高
第三式子转换:
(i++)*(++i)+(i--)*(--i)
=3*4+3*2
=12+6=18

diannaoza 发表于 2010-2-26 01:28:11

第三式子转换:
(i++)*(++i)+(i--)*(--i)
=3*4+3*2 ;;???
=12+6=18

;;
(i++)*(++i)=3*4
(i--)*(--i)=4*3前面的i值不是等于4了吗;;怎么会等于3*2??

原来括号还有优先级
4-1=3
下个括号先减1
3-1=2
然后再3*2=6
学习了,真是绕人,要用括号多省事。

Schneidershop 发表于 2010-2-26 11:26:27

多谢诸位帮忙解答了,不过小弟我还是不甚了解,我也是看了“吉林一所高校的c语言视频教程”后,没有听懂该问题的讲解才到这里发帖的,哪位老师对该问题的解答也是如您们这般的,不过我还是希望有哪位仁兄,能够抽出一些时间,更详尽的解释一下该题的分析步骤,因为我是个“笨人”,我想知道,在这4个运算单位中,应该先去处理“哪一个元素”,处理之前和处理之后,i的值应该是多少,期待您的讲解,小弟在此拜谢了...

因为我始终认为i在任何一个时刻,他的值应该是唯一的,而且存储于一个特定的地方的,不知道我这么说是否正确,期待您们的指点和纠正,多谢,不胜感激

二进制 发表于 2013-9-4 15:05:18

关于i++与++i的知识点 相信只有是本C语言的书都会讲解的楼主与其在这发帖来问不如踏踏实实的坐下了看一看书上是怎么说的

xuanfong1 发表于 2014-4-27 21:03:27

路过路过了顺便看看
页: [1]
查看完整版本: C语言入门 求教