我想聲明一個具有4個整數的結構,它們中的每一個只能是0到255之間。有沒有辦法呢?目前,我正在通過檢查輸入(在輸入函數中)來做到這一點。範圍從0到255的整數
struct
{
int num1;
int num2;
int num3;
int num4;
} ip;
我想聲明一個具有4個整數的結構,它們中的每一個只能是0到255之間。有沒有辦法呢?目前,我正在通過檢查輸入(在輸入函數中)來做到這一點。範圍從0到255的整數
struct
{
int num1;
int num2;
int num3;
int num4;
} ip;
是的,你可以使用位域類型是:
struct ip
{
unsigned num1 : 8;
unsigned num2 : 8;
unsigned num3 : 8;
unsigned num4 : 8;
};
謝謝。我如何爲Java做同樣的事情? –
我不確定在Java中這樣做的慣用方式 - 可能是一個將提供的數字限制在所需範圍內的setter函數? – caf
@NguyễnDuy:如果你非常關心java,那麼你爲什麼用C來問這個問題呢? –
好了,你可以使用unsigned char
(或更好,uint8_t
),但是,這並不意味着你可以停止檢查輸入。這取決於你的要求。如果我輸入256
會發生什麼情況?溢出可以嗎?
附註中,sizeof(char)
定義爲1,但一個字節未定義爲8位。在大多數硬件上,你會好起來的,但是出於這個原因你最好用uint8_t
。
我可以直接存儲一個整數值嗎?例如: blablabla-> num1 = 1; 工作會嗎? –
@NguyễnDuy是的。但作爲EdS。說,你需要考慮如何blablabla-> num = 256;應該被處理,特別是如果256來自輸入。 – nos
是的,我明白了。但問題的側面。我怎樣才能在Java中做同樣的事情?因爲我不認爲Java讓你聲明一個無符號的字符,是嗎? –
請與您所使用的語言標記這並分享相關的代碼。 – Tim
我知道了nvm。哈哈 –
@StephenC:在C中沒有「字節」類型 –