C++ 为什么此程序将所有字符替换为';a';
在程序中,我有一个字符数组。它从输入字符的用户处获取输入,当输入字母b时,它应将其替换为字母a。相反,它将所有元素替换为字母a,而不仅仅是将字母b替换为字母a。为什么要这样做C++ 为什么此程序将所有字符替换为';a';,c++,arrays,char,C++,Arrays,Char,在程序中,我有一个字符数组。它从输入字符的用户处获取输入,当输入字母b时,它应将其替换为字母a。相反,它将所有元素替换为字母a,而不仅仅是将字母b替换为字母a。为什么要这样做 #include <iostream> #include <string> using namespace std; int main() { const int buff_len = 10; char buffer [buff_len]; for(int i = 0; i < buff
#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;
}
#包括
#包括
使用名称空间std;
int main()
{
常数int buff_len=10;
字符缓冲区[buff_len];
对于(int i=0;i>缓冲液[i];
}
对于(int j=0;j 不能使用=
进行比较
=
是赋值运算符
因为if(buffer[j]='b')
的计算结果总是为true,所以您要做的就是始终将'a'
赋值给缓冲区[j]
为什么?
赋值表达式返回赋值,在这种情况下,if(buffer[j]='b')
将始终为真,这就是为什么if语句下面的代码总是被执行。使用=
进行比较
buffer[j] = 'a';
=
是赋值运算符
因为if(buffer[j]='b')
的计算结果总是为true,所以您要做的就是始终将'a'
赋值给缓冲区[j]
为什么?
赋值表达式返回赋值,在这种情况下,if(buffer[j]='b')
将始终为真,这就是为什么if语句下面的代码总是被执行的原因。对于比较==是必需的。buffer[j]='b'
(赋值)将始终为真
if(buffer[j] == 'b')
buffer[j] = 'a';
对于比较,需要==。缓冲区[j]='b'
(赋值)将始终为真
if(buffer[j] == 'b')
尝试更新:
if(buffer[j] = 'b'){
致:
因为if(buffer[j]='b')
总是被计算为true,所以下面的语句总是被执行
buffer[j] = 'a';
尝试更新:
if(buffer[j] = 'b'){
致:
因为if(buffer[j]='b')
总是被计算为true,所以下面的语句总是被执行
buffer[j] = 'a';
因为buffer[j]='b'
的返回值总是等于true。因为buffer[j]='b'
的返回值总是等于true。您有三个答案,但我有一个问题要问您:为什么您没有启用编译器警告,或者(如果有)为什么忽略它们?(或者仍然有编译器没有给出警告???)你有三个答案,但我有一个问题要问你:为什么你没有启用编译器警告或者(如果你有)为什么忽略它们?(或者仍然有编译器没有给出警告??)我早该知道的。我不知道发生了什么。我早该知道的。我不知道发生了什么。