0

在程序中,我有一个 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

4 回答 4

2

用来==比较。

=分配运算符。

你所做的总是分配'a'buffer[j]sinceif(buffer[j] = 'b')总是被评估为true

为什么?

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

于 2013-04-07T10:46:12.037 回答
1

尝试更新:

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

到:

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

因为if(buffer[j] = 'b')总是会被评估为真,这就是为什么总是执行下面的语句。

buffer[j] = 'a';
于 2013-04-07T10:47:12.610 回答
0

为了比较 == 是必需的。buffer[j] = 'b'(作业)将永远为真。

if(buffer[j] == 'b')
于 2013-04-07T10:47:01.563 回答
0

因为buffer[j] = 'b'返回值总是等于真。

于 2013-04-07T10:54:28.403 回答