0 c
我编写了一个简单的时钟,发现虽然小时和秒都可以,但如果我在一行上声明变量,分钟就不行了(分钟从 16 开始,而不是像预期的那样从 0 开始)。
如果我在单独的行上声明变量,问题就解决了。我还是很好奇,有人知道为什么吗?
这是代码:
#include <stdio.h>
#include <windows.h>
//h=hours, m=minutes, s=seconds.
int main(){
int h, m, s = 0; //THIS IS THE LINE: WHY "m" STARTS AT 16 AND NOT 0?
int delay = 1000;
while(1){
s++;
if(s>59){
m++;
s=0;
}
if(m>59){
h++;
m=0;
}
if(h>12){
h=1;
}
printf("\n %02d:%02d:%02d", h, m, s);
Sleep(delay);
system("cls");
}
}
Run Code Online (Sandbox Code Playgroud)
您的变量未初始化- 它们可以采用任何值,并且在初始化之前使用它们(通常)是不确定的行为。
一行代码如:
int h, m, s = 0;
Run Code Online (Sandbox Code Playgroud)
并没有将每个变量定义为零——仅定义第三个变量。它相当于:
int h;
int m;
int s = 0;
Run Code Online (Sandbox Code Playgroud)
要修复此问题,请将所有变量初始化为零:
int h = 0, m = 0, s = 0;
Run Code Online (Sandbox Code Playgroud)