2013-12-09 92 views
0

我想聲明一個具有4個整數的結構,它們中的每一個只能是0到255之間。有沒有辦法呢?目前,我正在通過檢查輸入(在輸入函數中)來做到這一點。範圍從0到255的整數

struct 
{ 
    int num1; 
    int num2; 
    int num3; 
    int num4; 
} ip; 
+0

請與您所使用的語言標記這並分享相關的代碼。 – Tim

+0

我知道了nvm。哈哈 –

+0

@StephenC:在C中沒有「字節」類型 –

回答

0

是的,你可以使用位域類型是:

struct ip 
{ 
    unsigned num1 : 8; 
    unsigned num2 : 8; 
    unsigned num3 : 8; 
    unsigned num4 : 8; 
}; 
+0

謝謝。我如何爲Java做同樣的事情? –

+0

我不確定在Java中這樣做的慣用方式 - 可能是一個將提供的數字限制在所需範圍內的setter函數? – caf

+1

@NguyễnDuy:如果你非常關心java,那麼你爲什麼用C來問這個問題呢? –

4

好了,你可以使用unsigned char(或更好,uint8_t),但是,這並不意味着你可以停止檢查輸入。這取決於你的要求。如果我輸入256會發生什麼情況?溢出可以嗎?

附註中,sizeof(char)定義爲1,但一個字節未定義爲8位。在大多數硬件上,你會好起來的,但是出於這個原因你最好用uint8_t

+0

我可以直接存儲一個整數值嗎?例如: blablabla-> num1 = 1; 工作會嗎? –

+0

@NguyễnDuy是的。但作爲EdS。說,你需要考慮如何blablabla-> num = 256;應該被處理,特別是如果256來自輸入。 – nos

+0

是的,我明白了。但問題的側面。我怎樣才能在Java中做同樣的事情?因爲我不認爲Java讓你聲明一個無符號的字符,是嗎? –