当我尝试编译时,它说 "h" 未初始化。但是有时它会起作用,具体取决于我在下面所做的事情。什么我没有得到这里?
when i try to compile it says "h" is not initialized. however it works sometimes depending on what i do below. whats am i not getting here?
#include <cs50.h>
#include <stdio.h>
int main(void)
{
//get height
int h;
do
{
get_int("Height: ");
} while (h < 1 || h > 8);
//
for (int y = 7 - h; y > 0; y--)
{
if (y < 0)
printf("# #");
else
printf(" ");
}
for (int x = 0; h > x; x++)
{
printf("#");
}
}
我整天都在研究这个,但我就是不明白。有时当我检查时,我的代码与课程相同,但它不起作用。我不确定这是我的间距还是什么。或者我会修复一个错误并继续工作,直到它在我开始工作后我什至没有触及那个区域后才回来。感觉完全迷失了。
您的代码具有未定义的行为,因为 h
未初始化并且您从未将 get_int("Height: ")
的 return 值存储到其中。
h
的值未定义,因此对于程序的不同运行它可能不同,从而解释观察到的行为。修复很简单:只需在 do
/while
循环中写入 h = get_int("Height: ");
。
这里是修改后的值:
#include <cs50.h>
#include <stdio.h>
int main() {
int h;
do {
h = get_int("Height: ");
} while (h < 1 || h > 8);
for (int y = 7 - h; y > 0; y--) {
if (y < 0)
printf("# #");
else
printf(" ");
}
for (int x = 0; h > x; x++) {
printf("#");
}
return 0;
}
#include <cs50.h>
#include <stdio.h>
int main(void)
{
//get height
int h;
do
{
get_int("Height: ");
} while (h < 1 || h > 8);
//
for (int y = 7 - h; y > 0; y--)
{
if (y < 0)
printf("# #");
else
printf(" ");
}
for (int x = 0; h > x; x++)
{
printf("#");
}
}
我整天都在研究这个,但我就是不明白。有时当我检查时,我的代码与课程相同,但它不起作用。我不确定这是我的间距还是什么。或者我会修复一个错误并继续工作,直到它在我开始工作后我什至没有触及那个区域后才回来。感觉完全迷失了。
您的代码具有未定义的行为,因为 h
未初始化并且您从未将 get_int("Height: ")
的 return 值存储到其中。
h
的值未定义,因此对于程序的不同运行它可能不同,从而解释观察到的行为。修复很简单:只需在 do
/while
循环中写入 h = get_int("Height: ");
。
这里是修改后的值:
#include <cs50.h>
#include <stdio.h>
int main() {
int h;
do {
h = get_int("Height: ");
} while (h < 1 || h > 8);
for (int y = 7 - h; y > 0; y--) {
if (y < 0)
printf("# #");
else
printf(" ");
}
for (int x = 0; h > x; x++) {
printf("#");
}
return 0;
}