为什么'\\'被认为是int?
当试图比较char *和'\'以查看它们是否相同时,我只是使用了字符=='\',但它给了我这个警告信息,当我运行它时,我得到了段错误:11。片段如下。为什么'\'被认为是int?
int strcompare(char *string1, char *string2) {
int i = 0;
while(string1[i] != 0 & string2[i] != 0) {
if (string1[i] != string2[i]) {
return false;
}
i++;
}
return true;
}
int special_character_is_in_pattern(char *pattern) {
int i = 0;
while(i<32) {
char *character = &pattern[i];
//int is_in = is_in_list(character, special_character_list);
return (strcompare(character, ".")|strcompare(character,"+")|strcompare(character,"?")|character == '\\') ? true : i++;
}
return false;
}
错误信息是这样的:
a.c:39:102: warning: comparison between pointer and integer ('char *' and 'int')
return (strcompare(character, ".")|strcompare(character,"+")|strcompare(character,"?")|character == '\\') ? true : i++;
~~~~~~~~~^~~~~
a.c:50:49: warning: incompatible integer to pointer conversion passing 'int' to parameter of type 'char *' [-Wint-conversion]
printf("%d\n",special_character_is_in_pattern('\\'));
需要一些帮助,感谢
"?"
是一个字符串。
'?'
是一个字符文字。
"\\"
是一个字符串文字。
'\\'
是一个字符文字。
和字符的类型为int
和C.不char
但由于字符是一个字符*我怎么比较它与字符串文字?我使用字符==“\\”? – infinityplus1 2014-09-13 19:42:11
@否则''character'是你的源代码中的'char *',如果你想比较一个单独的字符,你必须解除引用'character'。还要注意'''是按位或运算符; '||'是逻辑OR运算符, – ouah 2014-09-13 19:45:06
我使用*字符后没有警告!谢谢:),但事情是它返回0这是错误的,当我执行此行:printf(“%d \ n”,special_character_is_in_pattern(“\\”));我也改变了|到||以及。 – infinityplus1 2014-09-13 19:49:33
我认为问题是,你通过“\\”,而不是“\\” special_character_is_in_pattern
''x''是一个整数价值也是。由''\\''表示的字符仅仅是一个\。 – user2864740 2014-09-13 19:38:52
'...“?”)| * character =='\\')?真:我++;'字符是一个指针可变的,而不是一个字符。 – wildplasser 2014-09-13 19:40:24
我用*字符后没有警告!谢谢:),但事情是它返回0这是错误的,当我执行此行:printf(“%d \ n”,special_character_is_in_pattern(“\\”)); – infinityplus1 2014-09-13 19:46:14