2012-07-24 20 views
6

Cuando hago esto: count = ++ count; ¿Por qué recibo la advertencia? ¿La asignación al conteo de variables no tiene ningún efecto? Esto significa que el conteo se incrementa y luego se asigna a sí mismo o a algo más? ¿Es lo mismo que solo contar ++? Lo que sucede en count = count ++; ? ¿Por qué no recibo una advertencia por esto?La asignación a la variable no tiene ningún efecto?

Respuesta

13

count++ y ++count son las siglas de count=count+1. La tarea está incorporada, por lo que no tiene sentido volver a asignarla. La diferencia entre count++ (también sabe como postfix) y ++count (también conocido como prefijo) es que ++count ocurrirá antes que el resto de la línea, y count++ ocurrirá después que el resto de la línea.

Si se va a desmontar count=count++, que terminaría con esto:

count = count; 
    count = count+1; 

Ahora usted puede ver por qué Postfix no le dará una advertencia: algo realmente está siendo cambiado al final.

Si se toma aparte count=++count, que terminaría con esto:

count = count+1; 
    count = count; 

Como se puede ver, la segunda línea de código es inútil, y es por eso que el compilador está advirtiendo.

+0

Dije corto, no idéntico a. – LastStar007

+1

Derecha - su respuesta fue más breve cuando hice ese comentario (en referencia al valor devuelto por la expresión). Resultó una gran explicación aquí +1 –

+0

¿por qué no lo hace a través de una advertencia para la primera línea en el ejemplo count = count ++? porque eso no está haciendo nada. – Thomas

3

partir la declaración hasta que son básicamente escribiendo:

++count; 
count = count; 

como se puede ver count = count no hace nada, de ahí la advertencia.

3

el operador ++ es un atajo para el siguiente count = count + 1. Si rompemos su línea count = ++count responde a count = count+1 = count

3

Para expandir un poco, count ++ es postfix. Se lleva a cabo después de otras operaciones por lo que si usted hizo algo así como

int a = 0, b = 0; 
a = b++; 

sería un 0, b sería 1. Sin embargo, es ++ recuento prefijo si lo hizo

int a = 0, b = 0; 
a = ++b; 

entonces a y b ambos serían 1. Si usted acaba de hacer

count++; 

o

++count; 

, entonces no importa, pero si lo está combinando con otra cosa, será

Cuestiones relacionadas