2
我想運行此代碼,我使用short int。使用short int時突然跳轉值
int main() {
short int i=0;
while(++i)
printf("%u\n", i);
}
輸出繼電器(使用短整型):
1
2
3...
32767
4294934528
.
.
4294967295(last value)
爲什麼會出現驟升價值32767個任何解釋?
我使用的是linux(32位)操作系統。
您正在導致整數溢出,所以這導致** undefined behvaiour **。 –
您還在指定'%u'(即'unsigned int'),但提供了'signed short'。這也導致了**未定義的行爲**。 –
另外,看你的printf轉換說明符。 '%u'將打印一個無符號英寸'%hd'會更適合(有符號)short int。 –