一道简单的C语言计算题

| | 不指定Oct 08,2009 22:53 , CEO
资源分享 , 评论(4) , 阅读(272) , Via 本站原创
Tags:
 
  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int p = 0;
  5.     int i = 5;
  6.     int j = 5;
  7.     int q = 0;
  8.     q = (i++)+(i++)+(i++);
  9.     p = (++j)+(++j)+(++j);
  10.     printf("%d %d\n",q,i);
  11.     printf("%d %d\n",p,j);
  12. }
 

运行的结果为:
15 8
22 8

q的值还好理解 就是后++是在此操作语句之后才会变成加值
p的值就有点难理解了,应该是

(++j)+(++j)+(++j)
先计算开始的(++j)+(++j),而计算这个的话需要先计算括号中的值得到++之后的两次为 7+7
再次计算最后的++得到 7+7+8 = 22

不过不知道是不是真正的原因。

 

Oct 11,2009 20:58
龙城瓶子 Email Homepage
真难懂 大学没学好。。。
CEO 回复于 Oct 12,2009 15:26
哎 这些东西这些东西的确有点太纠结了
Oct 09,2009 22:23
卢松松 Email Homepage
我还真不懂!
CEO 回复于 Oct 09,2009 23:01
你可是牛人啊~~
Oct 09,2009 20:09
分享联盟 Email Homepage
为什么是7+7呢?还是不太明白这个,如果要我算,那就是6+7+8了。 另外前边那些int型完全可以用逗号分隔p、i、j、q只写一次“int”就可以了。
CEO 回复于 Oct 09,2009 23:01
7+7的地方设计到 ()的优先级高于+号,所以会先算出括号里面的值 int的地方的确可以像你那样写的,我写的有点多事
Oct 09,2009 14:23
先看看 Email Homepage
过来支持下你
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]