3
我正在學習K & R書。我目前在第4章。我正在閱讀第71頁上的atof()函數。函數atof(s)將字符串轉換爲其雙精度浮點等價。K&R書的練習4-2
ATOF的代碼()是如下:
// ATOF:轉換字符串s翻番
double atof2(char s[])
{
double val, power;
int i, sign;
for (i = 0; isspace(s[i]); ++i) //skip white space
;
sign = (s[i] == '-') ? -1: 1;
if (s[i] == '-' || s[i] == '-')
++i;
for (val = 0.0; isdigit(s[i]); i++)
val = 10.0 * val + (s[i] - '0');
if (s[i] == '.')
++i;
for (power = 1.0; isdigit(s[i]); i++) {
val = 10.0 * val + (s[i] - '0');
power *= 10.0;
}
return sign * val/power;
}
我的問題是關於變量:電源。我們爲什麼需要它?
我明白變量的使用:「val」,但我不確定變量:「power」。爲什麼我們用權力來劃分價值?
好的。但爲什麼他們使用了兩個循環:1)for(val = 0.0; isdigit(s [i]); i ++) val = 10.0 * val +(s [i] - '0');和2)for(power = 1.0; isdigit(s [i]); i ++)val = 10.0 * val +(s [i] - '0'); 功率* = 10.0; (val = 0.0,power = 1.0; isdigit(s [i]); i ++)val = 10.0 * val +(s [i])我們不能簡單地將兩個for循環合併到一個循環中, - '0'); 功率* = 10.0; }我希望我的問題明確嗎? –
@HusseinBarada首先將字符串轉換爲數字,直到遇到''。''。它會在遇到任何非數字時結束。第二個循環是將''。'後面的字符轉換爲數字。 – ameyCU
@HusseinBarada'-12.83'第一個循環會將前兩個字符(字符串中的_after_''-'')轉換爲整數並存儲在'val'中,第二個循環將在''後面處理字符。' – ameyCU