c语言问题,很简单哟

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:18:26
#include "stdio.h"
main()
{
char ch;
while(ch=getchar()!='\n')
printf("%c",ch);
}

#include "stdio.h"
main()
{
char ch;
while((ch=getchar())!='\n')
printf("%c",ch);
}的运行结果有什么不一样,为什么?测试环境:VC6.0

第一个 ch= getchar () != '\n' 中的!=优先级比 = 高,可以写成这样,
ch= (getchar () != '\n'), 所以是先判断输入的字符是否等于'\n', 如果输入是'\n', 那么c = 1, 否则 c = 0

第 2个: ()的优先级比!=高, 所以ch就等于输入的字符, 然后while语句判断c 是否等于'\n', 如果是就退出, 否则就继续执行

你自己试试效果看

(ch=getchar()!='\n') 先执行getchar()!='\n'
((ch=getchar())!='\n') 先执行((ch=getchar())

不同之处:
1
while(ch=getchar()!='\n') 相当于while(ch=(getchar()!='\n'))
ch=不是0就是1,也就是(getchar()!='\n')的逻值;

2
while((ch=getchar())!='\n')
ch=你所输入的字符,

=比!=的级别低啊.,所以第一个程序中,getchar()直接被赋予'\n',所以不管怎么输入,都不会显示字符串的,第二个因为有().()的优先级别比!=高,所以可以实现你想要的结果,明白么?回去看看 潭浩强写的那本C书91页

ch=getchar()!='\n'

!=的优先级大于=号,所以先算getchar()!=‘\n’的值为1;
ch = 1;
循环打印ASC码值为1的图形,
按回车, getchar()!=‘\n’值为0;
ch = 0;停止循环


((ch=getchar(