2015-05-26 67 views
0

我需要找到一個有符號的int,它是negtavie,但是作爲unsinged int等於22(意思是在wrap around發生後)。 int被輸入爲字符串,並用「atoi」轉換。c整數溢出 - 環繞

+3

什麼是你的問題? – Javia1492

+0

沒有這樣的數字,當轉換爲'unsigned'時,所有負的'int'都會產生一個大於'UINT_MAX/2'的值。 –

回答

0

實現此目的的唯一方法是使用5位長的整數類型,並將其包裝爲16..31之間的負值。

struct foo_t { 
    int bar: 5; 
} foo; 
int main(void) 
{ 
    foo.bar = 22; 
    printf("Signed: %d\n", foo.bar); 
    return 0; 
} 

但位域不正當無論如何,所以我很抱歉......

+0

某些東西'bitfield有符號/無符號實現定義'... – EOF