【发布时间】:2016-03-08 02:19:54
【问题描述】:
在这段代码中,我使用的是 unsigned int,并希望在循环到达“0”时立即终止循环。但这永远不会发生它通过'0'
#include <stdio.h>
typedef unsigned int uint32_t ;
delay (uint32_t x){
uint32_t y = 0;
for(y=x; y>= 0; y--){
printf("Display number %d\n", y);
}
}
int main()
{
uint32_t times = 10;
printf("Hello World!\n");
delay(10);
return 0;
}
输出:
Hello World!
Display number 10
Display number 9
Display number 8
Display number 7
Display number 6
Display number 5
Display number 4
Display number 3
Display number 2
Display number 1
Display number 0
Display number -1
Display number -2
Display number -3
Display number -4
Display number -5
Display number -6
【问题讨论】:
-
它会一直持续到
y变为负数。y是无符号的,所以它不能变成负数 -
y是 un unsigned 整数 (uint32_t) 所以它总是>= 0。所以uint32_t y = 0; for(y=x; y>= 0; y--)是一个无限循环。
标签: c unsigned unsigned-integer