为什么这段代码仍然给 i 加 1,即使在 C 中没有调用这样做的 if 语句?

问题描述 投票:0回答:1

这是我的代码:

#include <stdio.h>
#define SIZE 10

int main(void)
{
    int x,p[SIZE],i=0;
    printf("type some characters\n");
    while((x = getchar()) != EOF && i<SIZE)
    {
        if(x<'0' || x>'9')
        {
            p[i]=x;
            i++;
        }
        else
        {
            printf("this number is not valid %d\n",i);
        }
    }
    for(i=0;i<SIZE;i++)
    {
        putchar(p[j]);
    }
    return 0;
}

当您输入“数字字符”时,它应该不会添加到计数器中,而是在我输入数字字符时添加 1,并在添加任何其他字符时间时添加 2。

c if-statement
1个回答
0
投票

你的 if 语句的条件是向后的。

已修复:

if ( x<'0' || x>'9' )
{
    fprintf( stderr, "Unexepcted non-digit.\n" );
    exit( 1 );
}
else
{
    p[i] = x;
    ++i;
}
© www.soinside.com 2019 - 2024. All rights reserved.