2014-06-19 66 views
-1

比方說,我們有:在switch-case的「case」中是否有常量的變量類型?

unsigned char test; 
test=0xff; 

switch (test) 
    { 
    case -1: 
    cout<<"hit 1"; 
    break; 
    case 255: 
    cout<<"hit 2"; 
    break;  
    } 

爲什麼它給出了「打2」,而-1可以在內存中表示爲0xFF的一個無符號的字符。 在switch-case的「case」中有常量(這裏是-1和255)的類型嗎? 據我所知,沒有變量類型,我們無法比較兩個變量。

+0

從上次得到的答案中不清楚,最後一次提問?!? –

+0

@πάνταῥεῖ實際上「開關櫃怎樣處理」情況「中的常量值?」被我問過,但我決定結束這個問題,因爲那不是一個好問題。 – henryyao

+0

@henryyao:這個問題確實很清楚,但其他人已經有了非常好的答案。 –

回答

2

標準表示:

6.4.2 switch語句[stmt.switch]

  1. switch語句使控制被轉移到根據條件的值幾個語句中的一個。

  2. 條件應爲整型,枚舉型或類型。如果是類類型,則將條件從上下文隱式地轉換(第4章)爲整型或枚舉類型。 執行積分促銷。 switch語句中的任何語句可以與一種或多種情況下,標籤被標記爲 如下:

    caseconstant-expression:

其中常數表達式應是升級類型的轉換常量表達式(5.19)的開關條件。在轉換到提升類型的開關條件之後,同一個開關中的兩個情況常量應該具有相同的值。

數據類型爲int,因爲所有的小整型促進int

0

因爲unsigned char從0-255變得有溢出。

相關問題