我正在學習C語言,並且在double
乘法題目中遇到了問題。有關「雙倍」乘法的C編程
我需要打印原始值,然後double
的2*value
。
double num = 34.39;
printf("Original value = %d, 2x original value = %d", num, num*2);
我該怎麼做才能讓2x值真的是原來的2倍?
我正在學習C語言,並且在double
乘法題目中遇到了問題。有關「雙倍」乘法的C編程
我需要打印原始值,然後double
的2*value
。
double num = 34.39;
printf("Original value = %d, 2x original value = %d", num, num*2);
我該怎麼做才能讓2x值真的是原來的2倍?
你的乘法不是問題。
您的printf
格式字符串是。 %d
不適用於浮點值,但是對於整數,所以您會看到由於與編譯器斷開的合同而導致的廢話。
double num = 34.39;
printf("Original value = %lf, 2x original value = %lf", num, num*2);
Ohhh right! 感謝您的幫助! – Joel 2014-10-31 11:35:47
爲什麼你要參考作爲「與編譯器的契約」?編譯器只是在調用'printf'之前將浮點參數擴展爲8個字節(如果需要的話,這裏不是這種情況),將它稱爲「與'printf'合同?「 – 2014-10-31 11:39:50
@barakmanos:是的;更一般地我的意思是」與C實現契約「,其中'printf'是其中的一部分。 – 2014-10-31 11:59:35
'的printf( 「原始值=%克,2×原始值=%G」,NUM,NUM * 2 ); 「'? – someuser 2014-10-31 11:33:06
你應該養成編譯所有警告和調試信息的習慣(如果使用[GCC](http://gcc.gnu.org/),'gcc -Wall -Wextra -g'),你應該*使用調試器*('gdb') – 2014-10-31 11:43:55
請閱讀您正在使用的每個函數的文檔。請參見[printf(3)](http://man7.org/linux/man-pages/man3/printf.3.html ) – 2014-10-31 11:45:35