S1E21:指针课后作业-报警告
#include <stdio.h>#include <string.h>
int main() {
char st, ch;
unsigned int i, j; //定义为无符号整型,是因为下面strlen的返回值是无符号整型嘛;要不然要报警告
unsigned int len1, max = 0, min = 0;//定义为无符号整型,是因为下面strlen的返回值是无符号整型嘛;要不然要报警告
for (i = 0; i < 5; i++) {
printf("请输入第%d句话:", i + 1);
for (j = 0; (ch = getchar()) != '\n'; j++) {
st = ch;
}
st = '\0';
}
printf("你输入了下边5句话:\n");
for (i = 0; i < 5; i++) {
printf("%s\n", st);
len1 = strlen(st);
max = len1 > strlen(st) ? i : max;
min = len1 < strlen(st) ? i : min;
}
printf("其中做长的是:%s\n", st);
printf("其中做短的是:%s\n", st);
return 0;
} 本帖最后由 jackz007 于 2022-9-8 17:48 编辑
#include <stdio.h>
#include <string.h>
int main(void)
{
char st, ch ;
int i , j , min , max ;
for(i = 0 ; i < 5 ; i ++) {
printf("请输入第%d句话:", i + 1) ;
for(j = 0 ; (ch = getchar()) != '\n' ; j ++) st = ch ;
st = '\0' ;
}
printf("你输入了下边5句话:\n");
for (i = 0 , min = max = 0 ; i < 5 ; i ++) {
printf("%s\n" , st) ;
if(strlen(st) > strlen(st)) max = i ;
if(strlen(st) < strlen(st)) min = i ;
}
printf("其中最长的是:%s\n", st) ;
printf("其中最短的是:%s\n", st) ;
}
这个代码用 VC6.0、tdm-gcc 编译均无任何警告
tdm-gcc:
D:\\C>g++ -o x x.c
D:\\C>
VC 6.0
D:\\C>cl x.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
x.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:x.exe
x.obj
D:\\C> 是的,strlen返回值就不是int
但是也不影响啥,你可以按它要求定义,也可以强转,也可以忽略之 jackz007 发表于 2022-9-8 17:45
这个代码用 VC6.0、tdm-gcc 编译均无任何警告
tdm-gcc:
那明白了,应该是编译器的自身的问题 wp231957 发表于 2022-9-8 17:50
是的,strlen返回值就不是int
但是也不影响啥,你可以按它要求定义,也可以强转,也可以忽略之
主要是莫名其妙的出现个警告,还是想弄明白为啥 阿亮不减肥 发表于 2022-9-8 18:36
主要是莫名其妙的出现个警告,还是想弄明白为啥
要想弄明白,你得贴出编译器给出的这条警告信息的内容。 jackz007 发表于 2022-9-8 19:08
要想弄明白,你得贴出编译器给出的这条警告信息的内容。
[警告] comparison of integer 表达式s of different signedness: 'int' 和 'size_t' {aka 'long long unsigned int'} [-Wsign-compare]
页:
[1]