嗨,我在这个简单的代码中得到了这个奇怪的警告,让我完全糊涂了。我通过页面搜索,我发现这是一个提醒用户避免使用字符作为矩阵索引的警告,因为它们可以被签名,但显然情况并非如此。
以下是代码:
#include <stdio.h>
#include <ctype.h>
int main() {
char c='t';
if (isspace(c)==0)
printf ("%c is not a space",c);
return (EXIT_SUCCESS);
}
我的问题是警告的原因是什么?是否与isspace
期望int作为参数的事实相关?
答案 0 :(得分:1)
警告提醒用户避免使用字符作为矩阵索引,因为它们可以被签名,但显然情况并非如此
实际上,情况就是这样......你看到的不是编译器所看到的。
是否与isspace期望int作为参数这一事实相关?
是; isspace
是一个宏(在你的编译器实现中)访问一个数组...看看你的ctype.h或者让你的编译器扩展宏(例如,gcc -E),你会看到数组访问
要避免警告,请使用
if (!isspace((unsigned char)c))