Aprender: ¿Cómo la declaración ‘* ptr ++’ se evalúa en el lenguaje de programación C?
La declaración * ptr ++ tiene dos operadores unitarios, * (asterisco) y ++ (operador de incremento), aquí vamos a aprender cómo evaluará esta declaración.
evaluación del operador depende de la asociatividad y precedencia, operadores unitarios ++ de los operadores – + – ! ~ * y tener misma precedencia, así que aquí la evolución del operador se basará en la asociatividad de operadores.
asociatividad de los operadores unarios son: derecha a izquierda
Por lo tanto , ++ operador evaluará primero y luego * serán evaluados.
La declaración * ptr ++ será evaluar como ptr ++ y * ptr .
Consideremos el siguiente ejemplo:
#include <stdio.h>
int main()
{
int x=20;
int *ptr=&x;
*ptr++;
printf("%un",*ptr);
return 0;
}
La salida será una valor basura , porque inicialmente ptr está apuntando a la dirección de x pero después de ptr ++ apuntará a la siguiente bloque de memoria (dirección de memoria de x + sizeof ()), que puede tiene algún valor de basura.
Evaluación de la declaración printf ( “% u n”, * ptr ++);
En esta declaración printf ( “% u n”, * ptr ++); ++ es un operador después de la subasta, que habrá evaluar después de la ejecución de printf () comunicado. Por lo tanto, se imprimirá el valor de x (porque inicialmente ptr está apuntando a la dirección de x) después de salir de la declaración ptr ++ evaluará.
Considere el programa dado
#include <stdio.h>
int main()
{
int x=20;
int *ptr=&x;
printf("%un",*ptr++);
return 0;
}
Aquí , salida será 20