C++里有段东西看不懂,求教~

来源:百度知道 编辑:UC知道 时间:2024/04/28 03:19:45
while((c=getc(stdin))!='\n')
虽然getc和stdin的大概含义知道了,但还是看不懂这句的意思~~
我试了下把后面'\n'取消掉或改变之后就会出现错误,请问下后面的'\n'是必须的吗?还有什么别的相关别的可以用的??我想扩展下思维~

很简单,你把它分步来看,就明白了。

首先,这是一个 while( exp ) 语法,那么,我们需要对 exp 求真值。

然后我们来看看 exp, 发现它是 (c=getc(stdin))!='\n' ,结构上就是

exp1 != exp2 ,也就是判断左边和右边是否相等,如果左右不相等,那结果为 true,否则就为 false。

我们现在来看看 exp1,可以看到 exp1 是 c = getc( stdin ),它是一个等式? 实际上,这个表达式分两步执行,第一步是执行 getc( stdin ),也就是从标准输入流(键盘)获取一个字符,在这里是接受一个按键。然后把结果赋值给 c,所以 exp1 实际上就是 c,只不过要先执行 c = getc( stdin )。

好了,现在结果明了。

1、从标准输入流(键盘)获取一个字符,并把它赋值给 c。
2、将 c 和 '\n' 相比较,作为 while 语句的判断表达式。

'\n'很明显是换行,也就是说,只有当从键盘输入 回车(换行)时,c 和 '\n' 相等,这个时候 c != '\n' 为false,while结束。

那么,这个while语句的意思就是:从键盘输入一连串字符,真到按回车为止。

当c获取一个字符并且不为换行,就执行while语句里面的与语句

这个意思就是如果c不是‘\n',即不是回车的时候,就执行while循环体中的内容

当括号里面的表达式条件满足时始终循环!\n是回车当然不能去掉!执行时也一样一按回车程序结束!
while是在不知道循环次数的情况下用的!

这个while循环的括号里其实是有两部分的
第一个部分就是c = getc(stdin)
也就是用getc(stdin)取出后的内容赋值给c
然后判断看c是否等于'\n',也就是换行,如果c不等