为什么这个程序用'a'替换所有字符

时间:2013-04-07 10:44:37

标签: c++ arrays char

在程序中我有一个char数组。它从输入字符的用户那里获得输入,当输入字母b时,它应该用字母a替换它。相反,它用字母a替换所有元素,而不是用a替换字母b。为什么要这样做?

#include <iostream>
#include <string>

using namespace std;

int main()
{
const int buff_len = 10;
char buffer [buff_len];

for(int i = 0; i < buff_len; i++){
        cin >> buffer[i];

}

for(int j = 0; j < buff_len; j++){
    if(buffer[j] = 'b'){
        buffer[j] = 'a';
    }

}

for(int i = 0; i < buff_len; i++){
    cout << buffer[i];
}


system("Pause");
return 0;
}

4 个答案:

答案 0 :(得分:2)

使用==进行比较。

=是分配运算符。

您正在做的是始终将'a'分配给buffer[j],因为if(buffer[j] = 'b')始终会被评估为 true

<强>为什么吗

赋值的表达式返回赋值,在这种情况下,if(buffer[j] = 'b')将始终为true,这就是if语句下面的代码始终执行的原因。

答案 1 :(得分:1)

尝试更新:

if(buffer[j] = 'b'){

为:

if(buffer[j] == 'b')
             ^^^

因为if(buffer[j] = 'b')将始终被评估为true,所以这就是为什么始终执行下面的语句。

buffer[j] = 'a';

答案 2 :(得分:0)

对于比较==是必需的。 buffer[j] = 'b'(作业)永远都是真的。

if(buffer[j] == 'b')

答案 3 :(得分:0)

因为buffer[j] = 'b'的返回值始终等于true。