C++二级题目一道

来源:百度知道 编辑:UC知道 时间:2024/05/18 14:26:40
int a=3;float b=2;double k=5;char c='s';
a=(float)a*c-b&&k;
cout<<"a="<<a;
为什么结果是a=1呢?

因为逻辑运算的优先级比算术运算低,所以先做(float)a*c-b,然后在做&&k
真与真也是真,所以a=1

c在乘的运算里应该是ASCII码吧,C++中优先级有个口诀叫去掉一个最高的括号,去掉一个最低的逗号,剩下的是一二三目运算符,所以这道题想前面老兄说的,&&左右都为真值,即为1,所以整体为1

&&是逻辑运算俩边同时非0所以结果为1

麻烦楼上的老兄回答一下什么是:
“有个口诀叫去掉一个最高的括号,去掉一个最低的逗号,剩下的是一二三目运算符”
小弟将万分感谢!!!!!!!

呵呵,楼上的回答都很好····

针对这道题的运算符,优先级的顺序为:圆括号()>'*'>'-'>'&&'
所以先算(float)a=3.00000
再算a*c=3.00000*'s'的ASCII值
再算-b值肯定不等于0,即为真!
最后才和k进行逻辑与运算,结果为真,即为1,赋值给a,故a=1;