cstring 中 char 值的乘积?

Product of char values in a cstring?

免责声明:作为一个自称的 C++ 菜鸟,我可能犯了一个愚蠢的疏忽。请不要生气 ;)

无论如何,我正在尝试创建一个函数,将大写 cstring 的每个单独字符转换为 int (a=1,b=2,...),然后将值相乘。这是我的代码:

int product(char s[]) {
int curProd = 1;
for (size_t i = 0; i < strlen(s);++i) {
    if (s[i] = 'A') {
        curProd = curProd * 1;
    }
    if (s[i] = 'B') {
        curProd = curProd * 2;
    }
    if (s[i] = 'C') {
        curProd = curProd * 3;
    }

等等等等。我试着用

来测试这个
int main() {
char x[] = "HI";
printf("%d",product(x));
return(0);
}

当这是 运行 时,输出为 0。谁能告诉我这段代码有什么问题吗?

你想要 ==,而不是 =。您应该注意您的编译器警告。

为什么不直接将 ASCII 字符转换为整数然后减去 64?这将消除对所有 if 语句的需要。