什么是“有符号整数溢出”-是由于代码中的无限循环引起的吗?

时间:2019-07-25 02:59:19

标签: c cs50

我的程序在编译时会引发“有符号整数溢出”错误。

在研究此问题时,我偶然发现了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

0 个答案:

没有答案