马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
课后作业第4题,https://fishc.com.cn/forum.php?m ... peid%26typeid%3D570
原文是:#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "love";
char str2[] = "FishC";
if (strlen(str1) - strlen(str2) < 0)
{
printf("字符串"%s"比字符串"%s"短!\n", str1, str2);
}
else
{
printf("字符串"%s"比字符串"%s"长!\n", str1, str2);
}
return 0;
}
小甲鱼的做法是:所以 if (strlen(str1) - strlen(str2) < 0) 应该写成 if (strlen(str1) < strlen(str2))。
我改成< 0结果还是会报错
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "love";
char str2[] = "FishC";
if (strlen(str1) - strlen(str2))
{
printf("字符串"%s"比字符串"%s"短!\n", str1, str2);
}
else
{
printf("字符串"%s"比字符串"%s"长!\n", str1, str2);
}
return 0;
}
我改成这样的话的话就不会报错答案也是对的
#include <stdio.h>
#include <string.h>
int main()
{
char str1[] = "love";
char str2[] = "FishC";
if (strlen(str1) - strlen(str2) < 0)
{
printf("字符串%s比字符串%s短!\n", str1, str2);//把原文多余的"删掉,下面也是这样
}
else
{
printf("字符串%s比字符串%s长!\n", str1, str2);
}
return 0;
}
而且我把多余的“删掉,在把< 0删掉,结果就是:字符串love比字符串FishC短!
为什么
你自己的方法也是错的,你可以试试把str1和str2位置调换一下,打印的必然还是if里面的语句,而不会是else里的。
strlen返回的是无符号数,根本不存在负数一说,所以原文去和0比较才是错的
你改成strlen(str1) - strlen(str2),两个无符号数做运算,不管怎么样,除非两者相同能得到0,否则还是一个无符号数,所以你这样的判断条件势必会让if获得的参数为“真”,输出的一定是if里的语句,只不过这里正巧和正确答案相同罢了
|