为什么'\\'被认为是int?

时间:2014-09-13 19:37:06

标签: c

当试图比较char *和'\'以查看它们是否相同时,我只使用了字符=='\',但它给了我这个警告信息,当我运行它时我得到了分段错误:11 。片段如下。

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('\\'));

需要一些帮助,谢谢

2 个答案:

答案 0 :(得分:3)

"?"是一个字符串文字。

'?'是一个字符文字。

"\\"是一个字符串文字。

'\\'是一个字符文字。

字符文字在C中的类型为int而不是char

答案 1 :(得分:-1)

我认为问题在于你通过&#39; \\&#39;而不是&#34; \\&#34; special_character_is_in_pattern