我已經做了一個小函數,可以將十六進制顏色值轉換爲c中的rgb值。c pow函數打印錯誤的值,但函數返回正確的結果
功能是否正常工作,如果我通過它「#008080」我得到:
HEX: #008080 RGB: 0, 128, 128
我遇到的問題是,當我試圖打印()由POW返回的值(調試的目的),這是我所得到的:
EX::: 0
POWER::: 0.000000
EX::: 1
POWER::: 0.000000
EX::: 0
POWER::: 0.000000
EX::: 1
POWER::: 0.000000
EX::: 0
POWER::: 0.000000
EX::: 1
POWER::: 0.00000
這是輸出這個代碼:
int num = 0;
char c;
double power;
for (int i = strlen(hexString), ex = 0; i > 0; i--, ex++) {
c = hexString[i - 1];
power = pow(16.0, ex);
printf("EX::: %d\n", ex);
printf("POWER::: %lf\n", power);
num += convertHexCharToDec(&c) * power;
}
如果我跑ŧ他與GDB我可以看到,功率變量的值是1,然後是16.
這裏有什麼問題?該函數輸出正確的值,我可以在調試器中看到正確的值,所以爲什麼我看不到正確的值?
感謝
編輯: 增加功率可變型
EDIT2: 搞亂更多一些printfs輸出符後,我發現,我應該使用%F符。
感謝您的幫助。
「power」是「float」還是「double」?如果它是一個浮點數,則需要使用'%f'而不是'%lf'來打印它。 – NiBZ
發佈一個獨立的示例。 –
@NiBZ,no。 'l'對'f'或任何其他浮點說明符都沒有*作用,因爲浮點數被升級爲自動雙精度浮點數。 – paxdiablo