“左值作为赋值的左操作数”需要“错误”
以下代码生成“作为左操作数分配所需的左值”
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 == ' ')