当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Canyou tell me how ths C program run
帖子发表于 : 2006-12-01 16:23 

注册: 2006-10-25 17:50
帖子: 131
地址: 南京
送出感谢: 0 次
接收感谢: 0 次
#include<stdio.h>
main()
{
int c;
while(c=getchar()!=EOF)
printf("%d\n",c);
printf("%d - at EOF\n",c);
}
I know the result ,but I don't know how it run.Please tell me .ok?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-12-01 18:59 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
不编译你就想运行它??


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-12-01 20:44 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
gcc *.c
./a.out


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-01-13 21:20 

注册: 2006-05-04 15:52
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
晕倒,很明显LZ说的是How it run, 而不是How to run it... 楼上两位确实可以,专家分还真是不少!


关键在于 c = getchar() != EOF; 其实是 c = ( getchar() != EOF), 无论输入字符,在你没有按下ctrl + D前, 循环一直进行, c的值一直为真(1)...


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-01-13 21:33 

注册: 2006-03-10 15:10
帖子: 3182
地址: xi'an China
送出感谢: 0 次
接收感谢: 2
只要楼主不补充,这个帖子几乎不能理解 :P


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-01-27 0:51 

注册: 2007-01-16 23:26
帖子: 28
送出感谢: 0 次
接收感谢: 0 次
EOF是文件结束标志,在这儿作为输入结束标志,EOF的值为-1,而输入的字符是不可能为负数的,所以要进行构造,构造成一个输入字符的ASCII码值为负数的正数(位数不一样的)。


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-01-28 22:09 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
newrain 写道:
EOF是文件结束标志,在这儿作为输入结束标志,EOF的值为-1,而输入的字符是不可能为负数的,所以要进行构造,构造成一个输入字符的ASCII码值为负数的正数(位数不一样的)。

EOF是NULL=0吧。。


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-01-28 22:10 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
xphenix 写道:
晕倒,很明显LZ说的是How it run, 而不是How to run it... 楼上两位确实可以,专家分还真是不少!


关键在于 c = getchar() != EOF; 其实是 c = ( getchar() != EOF), 无论输入字符,在你没有按下ctrl + D前, 循环一直进行, c的值一直为真(1)...

英语不好。。。。。看错了


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-01-31 19:54 
头像

注册: 2006-09-14 21:59
帖子: 238
地址: 广东
送出感谢: 0 次
接收感谢: 0 次
BigSnake.NET 写道:
newrain 写道:
EOF是文件结束标志,在这儿作为输入结束标志,EOF的值为-1,而输入的字符是不可能为负数的,所以要进行构造,构造成一个输入字符的ASCII码值为负数的正数(位数不一样的)。

EOF是NULL=0吧。。


很明显是-1。。。


_________________
传说中的一凡……


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-02-01 22:06 
头像

注册: 2007-01-31 23:20
帖子: 7
送出感谢: 0 次
接收感谢: 0 次
efan 写道:
BigSnake.NET 写道:
newrain 写道:
EOF是文件结束标志,在这儿作为输入结束标志,EOF的值为-1,而输入的字符是不可能为负数的,所以要进行构造,构造成一个输入字符的ASCII码值为负数的正数(位数不一样的)。

EOF是NULL=0吧。。


很明显是-1。。。


正解,ASCII码里面有0了,如果EOF是0,那么正常的字符不就当做了结束符号了?众所周知,ASCII占1个字节,最高位总位0,即位非负数,因此可以用-1作为EOF


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-02-01 22:29 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
woodfish1988 写道:
efan 写道:
BigSnake.NET 写道:
newrain 写道:
EOF是文件结束标志,在这儿作为输入结束标志,EOF的值为-1,而输入的字符是不可能为负数的,所以要进行构造,构造成一个输入字符的ASCII码值为负数的正数(位数不一样的)。

EOF是NULL=0吧。。


很明显是-1。。。


正解,ASCII码里面有0了,如果EOF是0,那么正常的字符不就当做了结束符号了?众所周知,ASCII占1个字节,最高位总位0,即位非负数,因此可以用-1作为EOF


代码:
# 2 "a.c" 2
main()
{
int c;
while(c=getchar()!=(-1))
printf("%d\n",c);
printf("%d - at EOF\n",c);
}


看了一下预处理后的代码,原来真的是 -1


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译