# “lvalue required as left operand of assignment ” error

The following code produces a "lvalue required as left operand of assignment"

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

I assume I'm writing this wrong, what is wrong? and how would I write it correctly? I would appreciate any help! :)

Thanks.

You should use single quotes for chars and do double equals for equality (otherwise it changes the value of c)

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

Furthermore, you might consider something like this to make your boolean logic more clear:

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

Although your boolean logic structure works equivalently (&& takes precedence over ||), things like this might trip you up in the future.

equality is `==`, `=` is assignment. You want to use `==`. Also `""` is a `char*`, single quotes do a character.

Also, adding some parens to your condition would make your code much easier to read. Like so

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

`=` is the assigning operator, not the comparing operator. You are looking for `==`.

Personally, I prefer the minimalist style:

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

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

or

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

against

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