“左值作为赋值的左操作数”需要“错误”

以下代码生成“作为左操作数分配所需的左值”

if( c >= 'A' && c <= 'Z' || c = " " || c = ",") { 

我假设我写错了,出了什么问题? 我怎么写得正确?

你应该为chars使用单引号,并为了相等而使用double equals(否则它会改变c的值)

 if( c >= 'A' && c <= 'Z' || c == ' ' || c == ',') { 

此外,您可能会考虑这样的事情来使您的布尔逻辑更清晰:

 if( (c >= 'A' && c <= 'Z') || c == ' ' || c == ',') { 

虽然你的布尔逻辑结构可以等效地工作(&&优先于||),但是这样的事情将来可能会让你失望。

等于===是赋值。 你想使用== 。 另外""char* ,单引号做一个字符。

此外,为您的条件添加一些parens将使您的代码更容易阅读。 像这样

  ((x == 'c' && y == 'b') || (z == ',') || (z == ' ')) 

=是赋值运算符,而不是比较运算符。 您正在寻找==

就个人而言,我更喜欢简约风格:

 ((x == 'c' && y == 'b') || (z == ',') || (z == ' ')) ( x == 'c' && y == 'b' || z == ',' || z == ' ' ) 

要么

 ( x == 'c' && y == 'b' ? z == ',' : z == ' ' ) 

反对

 ( x == 'c' && y == 'b' ? z == ',' : z == ' ')