我已经阅读了一些有关此内容的帖子,但我仍然无法修复我的代码。
int numericValue(char s, int i) {
if (strcmp(s[i], "$") == 0)
return 0;
else
return value(s[i]) + numericValue(s, i + 1);
}
这是我的代码,如果我为int numericValue(char s, int i)
更改int numericValue(char *s, int i)
,我会收到此警告:
传递' strcmp'的参数1在没有强制转换[-Wint-conversion]的情况下从整数生成指针。
我该怎么办?
答案 0 :(得分:0)
如果您只是想比较两个字符,请使用下面的双等号(==)并注意美元符号周围的单引号,因为字符文字用单引号括起来,
int numericValue(char* s, int i) {
if (s[i] == '$')
return 0;
else
return value(s[i]) + numericValue(s, i + 1);
}
将使用strcmp来比较两个字符串,但在您的情况下,您将字符传递给strcmp作为第一个参数,这是一个不匹配。请参阅下面的strcmp签名:
int strcmp(const char *s1, const char *s2);