中易网

C语言题目:while(fabs(t)<1e-5)if(!s/10)brek; 循环结束的条件是() A:t>=1e-5&&t<=-1e&&s>-10&&s<10

答案:2  悬赏:60  
解决时间 2021-01-12 20:34
  • 提问者网友:寂寞撕碎了回忆
  • 2021-01-12 06:36
C语言题目:while(fabs(t)<1e-5)if(!s/10)brek; 循环结束的条件是() A:t>=1e-5&&t<=-1e&&s>-10&&s<10
最佳答案
  • 二级知识专家网友:逃夭
  • 2021-01-12 08:00
根据符号优先级判断。!优先级大于 /。s应该是非零的时候,是循环结束。追问那为什么这块的条件写成了s>-10&&s<10呢,怎么理解诶追答首先 int型相除的时候,9/10是等于 0的。意思就是 -10到10之间的数(不包括10和-10)除10 都是0。小数点,它强制变成整数,比如0.9,它并非四舍五入变成1,而直接转为0。
---------------------------------分割线-----------------------------------------------------
刚才亲自试了一遍,所有非零整数 !后的值都是0;意思就是,这题目设置本身就有问题,如果这样的话,s是任何数都会停止循环,包括0;
----------------------------------又是分割线----------------------------------------------
如果没理解错的话,题目的那个
if(!s/10)brek(break才对!!)
应该是
if(!(s/10))break;
然后只要在10到-10之内的数都会执行break停止循环。
可见出题者是多么不细心。将!和/符号的优先级搞混。
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-01-12 08:59
“if(!s/10)表示“如果s/10的值等于0,条件为真”的意思追问请问这个“!”是相当于“!(s/10)”先算s/10再取非 , 而不是先算!s,再算(!s)/10吗?追答对不起,我没有注意看,!的优先级比算术运算符高,所以应该是先算!s,再算(!s)/10追问那为什么这块的条件写成了s>-10&&s<10呢追答我觉得是题目写错了吧,我刚才用编译器测试过,确实是先执行!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息