LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 真主

哪位朋友看《C Primer Plus》的,本人需要编程练习的答案!

[复制链接]
发表于 2004-10-25 00:42:20 | 显示全部楼层

  1. 第一次循环:
  2. while (x++<103)  //在这里x是100(因为x++是先比较后自加1,所以这里不是101而是100)
  3. printf("%4d",x);    //在这里x是101(x是前面自加后的数值,这里才是101)

  4. 第二次循环:
  5. while (x++<103)  //在这里x是101
  6. printf("%4d",x);     //在这里x是102

  7. 第三次循环:
  8. while (x++<103)  //在这里x是102
  9. printf("%4d",x);    //在这里x是103

  10. 第四次循环:
  11. while (x++<103)   //因为x已经为103,所以不执行循环体 printf("%4d",x);
复制代码
发表于 2004-10-25 00:49:01 | 显示全部楼层
个人认为《C Primer Plus》这本书有点C基础后才比较容易接受!!
发表于 2004-10-25 02:10:24 | 显示全部楼层
最初由 真主 发表
int x=100;
while (x++<103)
printf("%4d",x);

为什么输出是101 102 103
而不是100 101 102 呀
我非常不理解
X++的话应当先打印X的初试值,为什么这里却先显示的是+1以后的值呀

请各位解释一下

谢谢!


后自增是面向语句的,如下代码:

[PHP]
#include <stdio.h>
int main()
{
int x=100,a;
a=x++*x++;
printf("x is %d,a is %d",x,a);
return 0;
}
[/PHP]

输出结果为:x is 102,a is 10000,就是说,当执行到a=x++*x++;时,
先计算x*x,保存入a中,语句结束前再执行x的两次自增预算。
不知理解的正确否?
发表于 2004-10-26 13:42:09 | 显示全部楼层
记得c  primer plus里有提醒过,像x++*x++之类的语句最好没有,因为执行结果会与编译器有关
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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