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。 –