正如標題所示,我很好奇unsigned int
(或者像NSUInteger
,u_int_blah
,但我假設這些都是相同的東西都是typedef
)的工作。例如,當它們的值降到零以下時,是否提高了豁免?會發生錯誤嗎?一個具體的例子就是間接地將該值設置爲負數。
無符號整數如何工作
for (unsigned int x = 5; x > -10; x--) {
// will x ever reach below zero, or will the loop terminate
}
此外,另一種方式來間接設置這將是具有所述用戶輸入它。
printf("Enter a number");
unsigned int x;
scanf("%ud", &x); // user enters something like -29
所以真的,我有三個問題。什麼停止和無符號int分配給負數(unsigned int x = - 3
)。這種行爲是如何實現的(通過編譯器或其他方式)。當一個無符號整數被分配(直接或間接)爲負值時會發生什麼。數據是否損壞?它溢出嗎?
Thankyou
可能duplica [是無符號整數減法定義的行爲?](http://stackoverflow.com/questions/7221409/is-unsigned-integer-subtraction-defined-behavior) –
這個問題是問什麼時會發生什麼時,unsigned int減去和添加。我想知道它們是如何被編譯器強制執行的,以及當它們低於零時會發生什麼。 –
當「結果是否定的」時,它是不是詢問「減去無符號整數」? –