以下代码生成“作为赋值左操作数所需的左值”
if( c >= 'A' && c <= 'Z' || c = " " || c = ",") {
我认为我写错了,出了什么问题?我怎么写得正确?
答案 0 :(得分:11)
你应该为chars使用单引号,并且为了相等而使用double equals(否则它会改变c的值)
if( c >= 'A' && c <= 'Z' || c == ' ' || c == ',') {
此外,你可能会考虑这样的事情来使你的布尔逻辑更清晰:
if( (c >= 'A' && c <= 'Z') || c == ' ' || c == ',') {
虽然你的布尔逻辑结构等效地工作(&amp;&amp;&amp;优先于||),但是这样的事情可能会让你在将来绊倒。
答案 1 :(得分:4)
平等为==
,=
为赋值。您想使用==
。此外""
是char*
,单引号也是一个字符。
此外,为您的条件添加一些parens将使您的代码更容易阅读。像这样
((x == 'c' && y == 'b') || (z == ',') || (z == ' '))
答案 2 :(得分:2)
=
是赋值运算符,而不是比较运算符。您正在寻找==
。
答案 3 :(得分:0)
就个人而言,我更喜欢简约风格:
((x == 'c' && y == 'b') || (z == ',') || (z == ' '))
( x == 'c' && y == 'b' || z == ',' || z == ' ' )
或
( x == 'c' && y == 'b' ? z == ',' : z == ' ' )
针对
( x == 'c' && y == 'b' ? z == ',' : z == ' ')