逆光飞翔芜湖 发表于 2022-3-30 18:34:32

S1E19课后题0求助

各位大佬,没看明白第0题,当S1<S2时,为什么会是检测第一个不一样的值,而不是最后一个。例如s1为aaaa,s2为bcde。明显if循环无法退出,那输出的值应该是a-e啊,为什么会是a-b的值??????
#include <stdio.h>

#define MAX 1024

int main()
{
      char str1;
      char str2;
      int i = 0;
      unsigned int n;

      printf("请输入第一个字符串:");
      while ((str1 = getchar()) != '\n')
                ;

      printf("请输入第二个字符串:");
      i = 0;
      while ((str2 = getchar()) != '\n')
                ;

      printf("请输入比较的字符数:");
      scanf("%u", &n);

      for (i = 0; i < n; i++)
      {
                if (str1 - str2)
                {
                        i++;
                        break;
                }
      }

      printf("比较的结果是:%d\n", str1 - str2);

      return 0;
}

wp231957 发表于 2022-3-30 18:55:08

题目呢

大马强 发表于 2022-3-30 19:13:31

if (str1 - str2) 因为只有0才是【假】
负数是【真】

大马强 发表于 2022-3-30 19:14:27

#include <stdio.h>

#define MAX 1024

int main()
{
    int a=-1;
    if(a)
            printf("a = %d",a);

    return 0;
}

a83711140 发表于 2022-3-31 10:33:53

if里面退出的是for循环

逆光飞翔芜湖 发表于 2022-4-1 21:23:29

大马强 发表于 2022-3-30 19:13
if (str1 - str2) 因为只有0才是【假】
负数是【真】

谢谢,我真的是把基础都扔家里了{:5_99:}
页: [1]
查看完整版本: S1E19课后题0求助