2012-07-09 74 views
4

爲什麼即使輸入值999999,它總是會去else語句?有人可以解釋爲什麼和什麼是正確的方法來做到這一點?比較C值的雙倍值

#include <stdio.h> 

int main(int argc, char **args) 
{ 
    double dValue = 0; 

    scanf("%d",&dValue); 

    if(10000 < dValue){ 
      printf("More than"); 
    } else { 
     printf("Less than"); 
    } 

    return 0; 
} 
+0

在'scanf'調用中嘗試'%f'或'%g'。 – vpit3833 2012-07-09 05:54:27

+4

'%d' - >'%lf',打開編譯器警告。 – Mysticial 2012-07-09 05:54:41

+0

'%d'確實*不*代表'double'。這意味着十進制轉換爲'int'。 – wallyk 2012-07-09 05:57:33

回答

7

如果你打算在值(使用"%d")的整數讀,那麼你應該聲明它是一個int。如果您打算將該值作爲double讀取,則應該使用"%lf"作爲您的scanf格式說明符。

+0

更改爲%lf,它工作正常。但是我打印dValue的值,它仍然打印999999值。爲什麼當我試圖在if語句中比較它時,它仍然是錯誤的,它將999999與另一個int值進行比較? – Azuan 2012-07-09 06:01:44

+0

@Azuan你打算如何打印'dValue'? – reuben 2012-07-09 06:03:01

+0

我使用%d來打印該值,因爲我使用%d來掃描。可以說我使用與上面相同的代碼。那麼我輸入999999.爲什麼它仍然跳過if語句?應該不是10000 <999999應該是真的? – Azuan 2012-07-09 06:16:13