我的程序在编译时会引发“有符号整数溢出”错误。
在研究此问题时,我偶然发现了similar question,这使我相信程序中存在某种无限循环。但是,我确实检查了程序中的每个变量,但找不到任何可能导致无限循环的东西。我尝试发现任何愚蠢的错误,例如错别字,但找不到任何错误。
int h;
do
{
h = get_int("Height: ");
} while(h<23 || h>0);
for(int i=0; i<h; i++)
{
for(int k=0; k<h; k++)
{
if(k<=(h-i))
{
printf("#");
}
else
{
printf(" ");
}
}
printf(" ");
for(int j=0; j<h; j++)
{
printf("#");
}
printf("\n");
}
错误消息:
clang -fsanitize=signed-integer-overflow -fsanitize=undefined -ggdb3 -O0
std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -
Wno-unused-variable -Wshadow mario.c -lcrypt -lcs50 -lm -o mario