求解一道C程序的问题
main() { float x=2.0,y; if(x<0.0) y=0.0; else if((x<5.0)&&(!x)) y=1.0/(x+2.0); else if(x<10.0) y=1.0/x; else y=1.0; printf("%f\n",y); } 上面的程序运行后得出的结果为:0.500000 我有以下几个问题不明白,请各位高手指教: 1: else if((x<5.0)&&(!x)) y=1.0/(x+2.0); 中的(!x)是什么意思,难道是自己否定自己吗? 2:看了结果我想程序最终也是执行了 else if((x<5.0)&&(!x)) y=1.0/(x+2.0);这行才得出的结果,我不明白y=1.0/(x+2.0)=1.0/4.0 从书上我了解到"/"号取得的结果是商,所以我自己理解这个运行的结果应该是0啊。
多重条件语句范围有重叠,导致路径不唯一,再有还是去补习一下C的那些基本知识吧,你不知道除法运算符吗?
1. ((x<5.0)&&(!x))这一句的意思是:X<5.0 和!X 做短路运算,其结果是一个布尔值。 其中!x 意思是 X 的逻辑非。 2. 您程序中所有的 ; 都是正确的吗?最好重新再看一下,那很重要。 请采纳我的答案。
答:我也不懂啊详情>>