在程序中我有一个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;
}
答案 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。