【发布时间】:2020-12-16 12:07:45
【问题描述】:
我对这段代码有疑问:我不知道为什么它打印 B 而不是 A,因为条件为真。
strlen(x) 明显大于 i。你能帮帮我吗?
#include <stdio.h>
#include <string.h>
int main()
{
char x[]="Hello";
int i = -3;
if(strlen(x)>i)
{
printf("A");
}
else
{
printf("B");
}
return 0;
}
【问题讨论】:
-
strlen()返回什么类型的值? -
问题是您在无符号比较中使用
-3。由于strlen返回一个size_t,它是一个无符号整数类型,将结果与int进行比较会导致int也被转换为size_t。 -
你的编译器应该给你一个警告。如果没有,你绝对应该提高警告级别。
标签: c if-statement strlen