Cómo leer una expresión de c ++ complejo

C ++ está llena de pequeños símbolos, cada uno de los cuales se suma al significado de las expresiones. Las reglas de la gramática C ++ son tan flexibles que estos símbolos se pueden combinar en combinaciones casi impenetrable complejos. Las expresiones en el lenguaje C más simple puede ser tan obtuso que solía haber un concurso anual para el que podría escribir el programa más oscura y que podía entenderlo.

Nunca es una buena idea para tratar de escribir código complejo, pero que a veces se ejecutará a través de expresiones en C ++ que son un poco desconcertante a primera vista. Sólo tiene que utilizar los siguientes pasos para descifrarlos:

  1. Comience en los paréntesis más integrados.

    Empezar a buscar los más exteriores paréntesis. Dentro de ellos, buscar paréntesis incrustados. Repita el proceso hasta que haya trabajado su camino a la pareja más profunda de paréntesis. Comenzar a evaluar que subexpresión primero usando las siguientes reglas. Una vez que entiende que la expresión, pop volver a cabo a un nivel superior y repetir el proceso.

  2. Dentro del par de paréntesis, evaluar cada operación en orden de precedencia.

    El orden en que se evalúan los operadores se determina por precedencia del operador se muestra en la tabla. Indirection viene antes de la multiplicación que viene antes de la adición de este modo la siguiente añade 1 más 2 veces el valor señalado por * ptr.

int i = 1 + 2 * * ptr-
Los operadores en orden de precedencia
PrecedenciaOperadorSentido
1() (Unario)Invocar una función
2* Y -gt; (Unario)Referencia a un puntero
2- (unario)Devuelve el negativo de su argumento
3++ (Unario)Incremento
3- (unario)Decremento
4* (Binario)Multiplicación
4/ (Binario)División
4% (Binario)Modulo
5+ (binario)Adición
5- (binario)Sustracción
6&& (binario)Y lógico
6!!OR lógico
7=, * =,% =, + =, - = (especial)tipos de asignación
  1. Evaluar las operaciones con la misma precedencia de izquierda a derecha (con excepción de la asignación, que va por el otro).

    La mayoría de los operadores con la misma precedencia evalúan de izquierda a derecha. Así, la siguiente añade 1 a 2 y suma el resultado a 3:

    int i = 1 + 2 + 3-

    El orden de evaluación de algunos operadores no importa. Por ejemplo, además funciona igual de izquierda a derecha como lo hace de derecha a izquierda. El orden de evaluación hace una gran diferencia para algunas operaciones como división. Los siguientes divisiones 8 por 4 y divide el resultado por 2:

    Video: Tutorial 22 del lenguaje C- Leer y buscar en un archivo

    int i = 8/4 / 2-

    La principal excepción a esta regla es la asignación, el cual es evaluado de derecha a izquierda:

    a = b = c-

    Esto asigna C a B y el resultado a una.

    Video: 110. Programación en C - Archivos - Ejercicio leer todo el contenido de un archivo de texto

  2. Evaluar subexpresiones en ningún orden en particular.

    Considere la siguiente expresión:

    int i = f () + g () * h () -

    La multiplicación tiene precedencia más alta, por lo que podría suponer que las funciones g () y h () se llaman antes f (), sin embargo, este no es el caso. llamada de función tiene la prioridad más alta de todas, por lo que las tres funciones se llaman antes de realizar cualquiera de la multiplicación o la adición. (Los resultados de regresar de g () y h () son multiplicados y luego añadidos a los resultados de regresar de f ()).

    La única vez que la orden de que las funciones se denominan hace la diferencia es cuando la función tiene efectos secundarios tales como abrir un archivo o cambiar el valor de una variable global. Que definitivamente no debe escribir sus programas para que dependen de este tipo de efectos secundarios.

  3. Realizar cualquier tipo de conversiones sólo cuando sea necesario.

    Video: Tutorial de C++ en Español # 53 - Lectura de Ficheros

    Usted no debe hacer más conversiones de tipos de lo absolutamente necesario. Por ejemplo, la siguiente expresión tiene al menos tres y posiblemente cuatro conversiones de tipos:

    flotar f = `a` + 1-

    El carbón ‘a’ debe ser promovido a un int para llevar a cabo la adición. El int se convierte entonces en un doble y luego se convierte a un solo flotador precisión. Recuerde que toda la aritmética se realiza ya sea en int o double. Debe evitar la realización de la aritmética general sobre los tipos de caracteres y evitar solo flotador de precisión por completo.

Artículos Relacionados