Inicio > C#, C# 4.0, Ejemplos, Tips > [C#] El operador ++, prefijo ó sufijo?

[C#] El operador ++, prefijo ó sufijo?

Un post rápido, muchas veces no tomamos en cuenta las especificaciones de los compiladores que usamos, y como mucho aprendimos C# después de usar C o C++, cometemos algunos errores que podemos evitar si leemos un poco. Aquí un ejemplo común, mi compañero Ivan me dice que esto es lo mismo:

int x = 0;
int t = 0;
int y = x++;
int z = ++t;

La pregunta seria ¿los valores de “y” y “z” serán los mismos?.

La respuesta es NO, ¿Por qué?.

R: El incremento prefijo hace que el resultado sea el valor del operando después de haber sido incrementado y el postfijo hace que el resultado sea valor del operando antes de haber sido incrementado.

Entonces si mostramos los valores de “y” y “z”, tenemos que:

y = 0” y “z = 1

Ahora lo que les decía de los compiladores, que pasa si hago esto:

int x = 0;
int y = x++;

¿Cual es el valor de “x” y cual es el valor de “y”?

En base a la respuesta que mencione arriba el valor de “x = 1” y el valor de “y = 0 ”.

Por lo tanto si hago esto:

int x = 0;
x = x++;

El valor de “x = 0”;

Si no me creen pregúntenle al compilador de C#. Por tal motivo puedo concluir que debemos de leer un poco antes de hacer uso de este tipo de operadores, porque muchas veces la solución a nuestro problema puede estar justo al frente de nosotros!.

Etiquetas de Technorati: ,,
Categorías:C#, C# 4.0, Ejemplos, Tips
  1. julio 3, 2009 a las 8:01 am

    Buen mini post, Exactamente sucede lo mismo con C++, =P~ aunque es dificil de explicar .. por alli encontre un buen ejemplo donde lo explicaban con piedritas😄 pero no quiero buscarlo.. asi que.. pss creanle a C# y a nor =D

  2. marzo 17, 2010 a las 3:08 pm

    Se explica después de entender como es que funciona el operador:

    El procesamiento en tiempo de ejecución de una operación de sufijo de incremento o decremento de la forma x++ o x– consta de los pasos siguientes:

    Si x está clasificada como una variable:
    Se evalúa x para producir la variable.
    Se guarda el valor de x.
    Se invoca el operador seleccionado con el valor guardado de x como argumento.
    El valor devuelto por el operador se almacena en la ubicación dada por la evaluación de x.
    El valor guardado de x es el resultado de la operación.

    El procesamiento en tiempo de ejecución de una operación de prefijo de incremento o decremento de la forma ++x o –x consta de los pasos siguientes:

    Si x está clasificada como una variable:
    Se evalúa x para producir la variable.
    Se invoca el operador seleccionado con el valor de x como argumento.
    El valor devuelto por el operador se almacena en la ubicación dada por la evaluación de x.
    El valor devuelto por el operador es el resultado de la operación.

  3. febrero 20, 2012 a las 8:02 pm

    Lo mejor para evitar que el código se comporte de forma distinta a como creemos que se va a comportar, es evitar ese tipo de operaciones. Es decir, si necesitas asignar el valor de x a y y después incrementar x, es preferible hacer:
    y=x;
    x++;
    y si lo que quieres es primero incrementar x y luego asignar el nuevo valor a y, pues:
    x++;
    y=x;
    puesto que así no hay confusión posible.
    Un buen programador, aunque sepa qué va a hacer el compilador en casos como y=x++, escribirá las instrucciones de forma que quede claro cuál es su intención.

  4. mayo 5, 2012 a las 11:40 pm

    esto no es nada bueno oke

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: