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

时间:2010-06-16 01:19:51

标签: c

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

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

我认为我写错了,出了什么问题?我怎么写得正确?

4 个答案:

答案 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 == ' ')