This question already has answers here:
What does the comma operator , do?
(8个答案)
3年前关闭。
我正在使用Turbo C ++来编译程序。该程序是
上面的for循环运行了额外的时间,因此nsame比正确值大1。因此,如果额外的nsame--,则程序的输出是正确的;被添加。
您有三个逗号分隔的表达式。前两个被评估并丢弃。它们的值未在测试中使用。仅使用最后一个表达式的值来确定何时终止循环。
您需要使用:
改进建议:
您可以删除前两个表达式之一,然后程序将运行。
(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++)