Problemas para crear una buena instrucción IF en C

Estoy tratando de crear algo así con la condición IF:

if(mychar[i] = "+")
{
   /* do something */
}

Quiero verificar si char [número i-1] es más pero no puedo definir más en mi condición correctamente: /

Agradecería si alguien pudiera ayudarme.

preguntado el 03 de mayo de 12 a las 22:05

Sin ofender, pero si este tipo de cosas le preocupan, le recomiendo que obtenga un buen libro sobre C antes de seguir adelante. -

3 Respuestas

Dos correcciones:

if(mychar[i] == '+')
                ^ use '' for char, and "" for strings
             ^ = is an assignment operator, == is a comparison operator

Vale la pena notar que, aunque no se recomienda, usar el operador de asignación solo como una expresión booleana es válido, ya que 0 se considera FALSO y cualquier otro valor se considera VERDADERO.

contestado el 03 de mayo de 12 a las 22:05

Corrige 'if(mychar[i] == '+')' - falta 'i' en if... '- Martín James

Sé que lo detectarías y lo arreglarías, pero era una oportunidad demasiado buena para dejarla pasar :) - Martín James

Para evitar este percance de usar un signo igual, simplemente comience a hacerlo de esta manera

if ('+' == mychar[i]) 

Una vez que tenga este hábito de poner la constante (char, int, double, ...) la compilación escupirá su error.

contestado el 03 de mayo de 12 a las 22:05

En mi opinión, de esta manera es mucho más difícil de leer. Es mejor aprender la forma correcta de comparar valores que usar un vendaje. - Ricardo J. Ross III

¡NO! Las condiciones de Yoda son para compiladores malos que no pueden advertirle sobre escribir código de manera mucho más lógica. Nadie dice "Si más es el mychar[i]". - Dreamlax

Adquieres el hábito y luego no tienes problemas. Se trata de condicionarse a un cierto pensamiento. Oh - Funciona sin fallas. - ed sanar

¿Por qué alguien debería entrenarse para escribir código ilógicamente cuando cualquier compilador moderno puede advertir sobre tales construcciones? Sería mejor entrenarse para leer y comprender los errores y advertencias del compilador que escribir código al revés. - Dreamlax

@dreamlax - La declaración if (mychar[i] = 'x') es lógicamente correcto. Pero puede que no sea lo que pretendías. Es como decir 'Hay 5 peniques en mi billetera, veamos, oh sí, lo hay' o '¿Qué monedas hay en mi billetera? ¿Hay 5 peniques? Sí, las hay' Ambas afirmaciones razonables y lógicas. - ed sanar

Dada su declaración if original f(mychar[i]="+") { do sth } :

Primero, usando un solo = provoca una cesión. En este caso, una asignación de "+" a mychar[i].

C te permitirá asignar un valor en una declaración if, pero nunca conocí a nadie que lo hiciera en la práctica. Está tratando de comparar valores, por lo que desea utilizar == en lugar de =.

En segundo lugar, está utilizando una cadena constante "+" en lugar de un char '+', por lo que el compilador se queja de asignar un puntero a una cadena de caracteres a un carácter.

Finalmente, uso una construcción cuando comparo un valor con una constante. pongo la constante antes ==.

if('+' == mychar[1])

Si escribo rápido y escribo if('+' = mychar[1]) Obtendré un error en tiempo de compilación por intentar asignar un valor a una constante.

contestado el 03 de mayo de 12 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.