El siguiente código produce un “lvalue requerido como operando de asignación izquierdo”
if( c >= 'A' && c <= 'Z' || c = " " || c = ",") {
Supongo que estoy escribiendo esto mal, ¿qué está mal? ¿Y cómo lo escribiría correctamente?
Debe usar comillas simples para los caracteres y hacer dobles iguales para la igualdad (de lo contrario, cambia el valor de c)
if( c >= 'A' && c <= 'Z' || c == ' ' || c == ',') {
Además, podrías considerar algo como esto para aclarar tu lógica booleana:
if( (c >= 'A' && c <= 'Z') || c == ' ' || c == ',') {
Aunque su estructura lógica booleana funciona de manera equivalente (&& tiene prioridad sobre ||), este tipo de cosas podrían hacer que se tropiece en el futuro.
la igualdad es ==
, =
es la asignación. Quieres usar ==
. También ""
es un char*
, las comillas simples hacen un carácter.
Además, agregar algunos parámetros a su condición haría que su código sea mucho más fácil de leer. Al igual que
((x == 'c' && y == 'b') || (z == ',') || (z == ' '))
=
es el operador de asignación, no el operador de comparación. Usted está buscando ==
.
Personalmente, prefiero el estilo minimalista:
((x == 'c' && y == 'b') || (z == ',') || (z == ' ')) ( x == 'c' && y == 'b' || z == ',' || z == ' ' )
o
( x == 'c' && y == 'b' ? z == ',' : z == ' ' )
en contra
( x == 'c' && y == 'b' ? z == ',' : z == ' ')