我正在用 c 制作一個計算器,除了使用除法命令“/”外,一切正常
當一個數字被 0 除時,它應該列印出“NaN”然后退出程式。然而輸出是:NaN0.0
這意味著盡管使用了 return 0 命令,該函式也會回傳浮點數的值。
我如何才能讓函式只回傳“NaN”?
float calc(float param1, char operator1, float param2){
#include <math.h>
float result;
switch(operator1){
case ' ':
result = param1 param2;
return result;
break;
case '-':
result = param1 - param2;
return result;
break;
case '*':
result = param1 * param2;
return result;
break;
case'/':
if(param2 == 0){printf("NaN"); //Issue here
return 0;
}
else{
result = param1 / param2;}
return result;
break;
case '^':
result = pow(param1, param2);
return result;
}
}
uj5u.com熱心網友回復:
我需要完整的代碼才能 100% 確定,但我認為您正在做的是以下內容:
printf('%lf', calc(0, '/', 0));
所以,你在螢屏上輸出“calc”命令的執行結果,這里是:0
但是,在回傳這個 0 值之前,您還要將值“NaN”列印到螢屏上。
所以,通過這樣做:
printf('%lf', calc(0, '/', 0));
你告訴電腦:
- 計算 calc(0, '/', 0) 的結果:它在執行程序中列印 NaN
- 然后,列印結果,即 0
這就是為什么您的計算機顯示 NaN 0
該函式沒有回傳兩個值。它確實只回傳一個,但也列印 NaN。
要解決這個問題,只需洗掉列印并回傳一個可以在其余代碼中理解為 NaN 的特殊值。
最好的事物,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361318.html
上一篇:c格式輸入為二進制然后輸出
下一篇:C中結構陣列中的指標問題
