This question already has answers here:
What does the comma operator , do?
                                
                                    (8个答案)
                                
                        
                                3年前关闭。
            
                    
我正在使用Turbo C ++来编译程序。该程序是

 main()

 {

    char inp1[21],inp2[21];

    int nsame=0,i=0,l1,l2;

    clrscr();

    gets(inp1);

    gets(inp2);

    l1=strlen(inp1);

    l2=strlen(inp2);

    if(l1==l2)
    {

        for(;inp1[i]!='\0',inp2[i]!='\0',inp1[i]==inp2[i];i++)
        {
            nsame++;
        }
    }
    if(nsame==l1)
    {
        puts("Same");
    }
    else
    {
        puts("Not the same");
    }
    getch();

}


上面的for循环运行了额外的时间,因此nsame比正确值大1。因此,如果额外的nsame--,则程序的输出是正确的;被添加。

最佳答案

for语句中的条件不正确。你有:

for(; inp1[i]!='\0', inp2[i]!='\0', inp1[i]==inp2[i]; i++)


您有三个逗号分隔的表达式。前两个被评估并丢弃。它们的值未在测试中使用。仅使用最后一个表达式的值来确定何时终止循环。

您需要使用:

for(; inp1[i]!='\0' && inp2[i]!='\0' && inp1[i]==inp2[i]; i++)


改进建议:

您可以删除前两个表达式之一,然后程序将运行。

for(; inp1[i]!='\0' && inp1[i]==inp2[i]; i++)

10-04 21:58
查看更多