恒宝广场附近酒店:一道错误的C语言题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/10 23:30:46
等级考试C语言中的一道题:应该是这样的 while((ch=getch())=='A'),如果该为 while(ch=getch()=='A'),当输入 A 时ch是多少??为什么?当不是A时??
有没有人试试啊,结果总是0啊

当输入 A 时ch是1
当不是A时 ch是0

因为=的优先级低于==,运算表达式ch=getch()=='A'是,先用getch()得来得值与'A'进行==运算,然后将值赋值于ch

ch =1
因为赋值运算符优先级低于关系运算符==,所以先执行后面的判断后再赋给ch
而 getch()=='A'中,由右到左运算,先取得getch()再与'a'比较!

赋值运算符的优先级很低, 你可以理解为最低, 仅仅比,高。 getchar()读入'A'后, 先和'A'比较, 因为相等, 所以表达式
getchar()=='A'的值为真, 即结果是1。 最后再把1的值赋给
变量ch。

记住, 这种先赋值再判断的语句, 一定要加 括号

while((ch=getchar())=='A')

ch=1