0
我正在學習整數溢出和下溢,並想知道是否有可能通過給出負輸入n來控制j的值?整數溢出/下溢
int i = n;
size_t j = i;
printf("%lu",j);
例如,如果我想「J」的數值是255,是有可能工藝的負數「n」來給我輸出?
我正在學習整數溢出和下溢,並想知道是否有可能通過給出負輸入n來控制j的值?整數溢出/下溢
int i = n;
size_t j = i;
printf("%lu",j);
例如,如果我想「J」的數值是255,是有可能工藝的負數「n」來給我輸出?
我想你要找的是什麼
signed char i = -1;
unsigned char j = i;
printf("%u\n", j);
在8位,有符號數-1「環繞」無符號價值255
你問到size_t
,因爲是它是一個無符號類型,但通常是32甚至64位。在這些尺寸中,數字255在有符號和無符號變體中都是可表示的(並且具有相同的表示形式),所以不存在對應於255的負數。但是,您當然可以看到類似的效果,並使用不同的值。例如,在具有32位整數的機器上,此代碼:
unsigned int i = 4294967041;
int j = i;
printf("%d\n", j);
很可能會打印-255。這個值是因爲2^32 - 255 = 4294967041。
在後面的代碼中,行爲是實現定義的(並且可能會引發一個信號) –
是的!您可以將'n'設置爲255.:-P –
「整數下溢」不存在。在普遍接受的術語中,「下溢」只能發生在浮點算術中。作爲你的問題,答案很簡單:只需將你的'n'設置爲'255'。答案的簡單和瑣碎讓人懷疑你錯過了你的問題。 – AnT
對不起,我的意思是給予負值。我已更新問題 –