2013-02-20 84 views
0

我有以下代碼長比較

long x; 
scanf("%ld",&x) 
if(x==-1) // does this comparison is allowed 
    printf("just test\n"); 

long參數需要進行任何造型比較之前?

+0

演員的必要性只能從某些情況下推導出來。無論如何,我不明白爲什麼「長」會是一個特例。 – 2013-02-20 11:04:33

回答

7

-1是小數點int。有一個從intlong的隱式轉換(升級),因此-1會自動「鑄造」到long。另外,-1x都是簽名類型。不需要任何額外的演員。

+1

謝謝你的回答。在10分鐘內接受 – MOHAMED 2013-02-20 11:05:36

3

正如我所說,沒關係。如果你想避免「型焦慮」,你可以使字面有long類型:

if(x == -1l) 
     ^
      | 
    lower-case 'L' 
    means "long int" 

但是,這是一個有點着急,看着本身,在某些情況下。

+4

或者直接寫'-1L'。小寫'l'被認爲是不好的風格,因爲它看起來像某些編輯器字體上的數字1。 – Lundin 2013-02-20 11:49:29