为什么while后面要加一个while getcharr();

> 再问while(ch=getchar()!=EOF)这是做一个习题遇见的问题。比如:while(c
再问while(ch=getchar()!=EOF)这是做一个习题遇见的问题。比如:while(c
发布时间: & &
浏览:1 & &
回复:9 & &
悬赏:0.0希赛币
while(ch=getchar()!=EOF)这是做一个习题遇见的问题。比如: &while(ch=getchar()!=EOF)
//error和 &while((ch=getchar())!=EOF)
//多了层括号类似如下代码:#include &stdio.h&int main(void){
a=0; while ((ch = getchar())!=EOF)
//如果去掉这层括号while (ch = getchar()!=EOF)&
if (ch &= ' ' || ch == '\n' || ch == '\t')
printf(&%-5c&,ch);
else printf(&^%-4c&,ch+64);
printf(&%-5d&,ch);
if(a%8 == 0)&
printf(&\n&);
a++; }return 0;}这个程序是用来读取字符流并针对不同字符采取不同的处理方式。(最后有题干)问题在于如果去掉括号结果会出错。运行实例:--------------YES:有括号的情况下-----------aa
请按任意键继续. . .----------------------NO:没有括号的情况下-----------a^A
请按任意键继续. . .------------故障点在于这两条语句:while ((ch = getchar())!=EOF) & while (ch = getchar()!=EOF)
/error为什么error语句会导致如上述输出?while (ch = getchar()!=EOF)
//这句表达式如何求值?根据优先级:getchar()!=EOF先结合,返回一个bool值。//这个推论正确?然后再将来这个bool值赋值给ch
ch = (bool)x
//这个推论正确?总之:我的疑惑点现在集中于:抛掉正确与否,为什么这种(错误的)语法会导致这样(错误)的输出结果?附上这个程序的题干:编写一个程序,把输入作为字符流读取,直到遇到EOF。令该程序打印每个输入字符及其ASCII编码的十进制值。注意在ASCII序列中空格字符前面的字符是非打印字符,要特殊处理这些字符。如果非打印字符是换行符或制表符,则分期打印\n或\t。否则,使用控制字符符号。例如,ASCII的l是Ctrl+A,可以显示为AA。注意A的ASCⅡ值是Ctrl+A的值加64。对其他非打印字符也保持相似的关系。除去每次遇到一个换行符时就开始一个新行之外,每行打印10对值。
getchar()!=EOF先结合,返回一个bool值。//这个推论正确?对的。
kirahayatao & &
00:32:47 & &
& & (0)(0)楼上正解。!=运算符优先级比=高,如果不加括号,就会产生上述结果,括号的优先级比!=高,加上了就会先计算括号内的部分。
kirahayatao & &
00:32:47 & &
& & (0)(0)LS姐妹们已经说得很清楚了,必须要加括号的
kiradboy & &
00:32:47 & &
& & (0)(0)!=运算符优先级比=高
kiradboy & &
00:32:47 & &
& & (0)(0)什么意思 如果不加括号,就是(char)ch = (bool)x
这样赋值没有意义,但是语法没有问题。x是0或者1,0就是 '\0',1ASCII码对应的字符我就不知道了探讨引用:楼上正解。!=运算符优先级比=高,如果不加括号,就会产生上述结果,括号的优先级比!=高,加上了就会先计算括号内的部分。(char)ch = (bool)x
kiral223355 & &
00:32:47 & &
& & (0)(0)优先级有时候很难记,所以多用()来明确的表示。最容易记的一个=,这个优先级相当的低,但凡出现,即认为是最后一个就好了(一些复合的除外,比如+=)。
kira9609 & &
00:32:47 & &
& & (0)(0)
变量ch应该被定义为int类型,不然ch不会和EOF相等;因为EOF是int类型的,而ch为char类型的,表示的范围就不一样。while ((ch = getchar()) != EOF)最后是ch和EOF比较。
kira329 & &
00:32:47 & &
& & (0)(0)就是优先级的问题嘛。实践中多写括号总是木有错的。
kiracl & &
00:32:47 & &
& & (0)(0)注意优先级别。。。  C/C++ code  优先级
名称或含义
数组名[常量表达式]
(表达式)/函数名(形参表)
成员选择(对象)
对象.成员名
成员选择(指针)
对象指针-&成员名
负号运算符
单目运算符
强制类型转换
(数据类型)表达式
自增运算符
++变量名/变量名++
单目运算符
自减运算符
--变量名/变量名--
单目运算符
取值运算符
单目运算符
取地址运算符
单目运算符
逻辑非运算符
单目运算符
按位取反运算符
单目运算符
长度运算符
sizeof(表达式)
表达式/表达式
双目运算符
表达式*表达式
双目运算符
余数(取模)
整型表达式/整型表达式
双目运算符
表达式+表达式
双目运算符
表达式-表达式
双目运算符
变量$>$表达式
双目运算符
表达式&表达式
双目运算符
表达式&=表达式
双目运算符
表达式&表达式
双目运算符
表达式&=表达式
双目运算符
表达式==表达式
双目运算符
表达式!= 表达式
双目运算符
表达式&表达式
双目运算符
表达式^表达式
双目运算符
表达式|表达式
双目运算符
表达式&&表达式
双目运算符
表达式||表达式
双目运算符
条件运算符
表达式2: 表达式3
三目运算符
赋值运算符
变量=表达式
变量/=表达式
变量*=表达式
取模后赋值
变量%=表达式
变量+=表达式
变量-=表达式
左移后赋值
右移后赋值
变量$>$=表达式
按位与后赋值
变量&=表达式
按位异或后赋值
变量^=表达式
按位或后赋值
变量|=表达式
逗号运算符
表达式,表达式,…
从左向右顺序运算kira & &
00:32:47 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&2014年2月 C/C++大版内专家分月排行榜第二2013年4月 C/C++大版内专家分月排行榜第二2013年3月 C/C++大版内专家分月排行榜第二2012年12月 C/C++大版内专家分月排行榜第二2012年11月 C/C++大版内专家分月排行榜第二2012年8月 C/C++大版内专家分月排行榜第二
2014年12月 C/C++大版内专家分月排行榜第三2014年5月 C/C++大版内专家分月排行榜第三2014年3月 C/C++大版内专家分月排行榜第三2013年12月 C/C++大版内专家分月排行榜第三2013年10月 C/C++大版内专家分月排行榜第三2013年9月 C/C++大版内专家分月排行榜第三2013年7月 C/C++大版内专家分月排行榜第三2013年5月 C/C++大版内专家分月排行榜第三2013年2月 C/C++大版内专家分月排行榜第三2013年1月 C/C++大版内专家分月排行榜第三2012年9月 C/C++大版内专家分月排行榜第三
2013年10月 Linux/Unix社区大版内专家分月排行榜第二2013年9月 Linux/Unix社区大版内专家分月排行榜第二
2013年12月 Linux/Unix社区大版内专家分月排行榜第三2013年11月 Linux/Unix社区大版内专家分月排行榜第三2013年6月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1656 人关注过本帖
标题:while ((ch = getchar()) != EOF) 为什么字符与ctrl+z之间必须有回车才结束 ...
等 级:论坛游民
帖 子:89
专家分:10
结帖率:61.9%
&&已结贴√
&&问题点数:2&&回复次数:3&&&
while ((ch = getchar()) != EOF) 为什么字符与ctrl+z之间必须有回车才结束循环,继续执行?
#include &stdio.h&
int main(void)
&&& while ((ch = getchar()) != EOF)
&&&&&&&&putchar(ch);
&&& printf(&hello\n&);
&&& return 0;
为什么输入&happy&后马上敲上ctrl+z,再按回车,不结束程序,
而输入&happy&敲上回车,再敲上ctrl+z,再按回车,才结束程序?
换句话说,为什么字符与ctrl+z之间必须要有回车?????????
搜索更多相关主题的帖子:
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
另一贴已经回答,回车后接收走流中的数据,才会响应ctrl+z命令
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
仰望星空...........不忘初心!
等 级:论坛游民
帖 子:89
专家分:10
我找到答案了:C PRIMER PLUS 第192页:
许多微型计算机系统将一行的开始位置键入的ctrl+z识别为文件尾信号,还有一些则把任意位置的ctrl+z解释成文件尾信号。
版权所有,并保留所有权利。
Powered by , Processed in 0.022123 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved

我要回帖

更多关于 while后面用什么时态 的文章

 

随机推荐