Operadores de tiempo de ejecución en C

¿Cuál es la definición de operador de tiempo de comstackción y tiempo de ejecución en C? Sé que sizeof () es un operador de tiempo de comstackción en C pero ¿cuáles son los operadores de tiempo de ejecución en C?

Para C; varias optimizaciones (p. ej., propagación constante y plegamiento constante) significan que cada operador puede realizarse potencialmente en tiempo de comstackción (si la situación lo permite).

Para un ejemplo simple, considere esta función:

 int foo(int a, int b) { return a+b; } 

Esto parece que la adición debe hacerse en tiempo de ejecución.

Ahora considera este código:

 int x = foo(1, 2); 

Ahora el comstackdor puede “en línea” la función, propagar las constantes y hacer la sum en tiempo de comstackción. Usted terminaría con int x = 3; (más una copia potencialmente redundante de la función foo() que es capaz de hacer la adición en tiempo de ejecución).

También hay casos en los que no se puede hacer una optimización en tiempo de comstackción, pero se puede hacer durante el enlace (con LTO / Link Time Optimization); donde el operador no es evaluado en tiempo de comstackción o tiempo de ejecución. Un ejemplo simple sería si el código en otro archivo de objeto (“unidad de comstackción”) hiciera int x = foo(1, 2); .

Además, en general, lo contrario también es cierto: nada garantiza que un operador se evaluará en el momento de la comstackción cuando sea posible; así que no puedes decir que un operador siempre es “tiempo de comstackción”. Para un ejemplo simple de esto, considere la concatenación de cadenas (por ejemplo, char *myString = "Hello " "World!"; ) – sería legal que el comstackdor genere código que realice la concatenación en tiempo de ejecución (aunque es difícil de pensar de una razón por la que un comstackdor querría).

Operadores de tiempo de comstackción -> Calculado durante la comstackción

Operadores de tiempo de ejecución -> Durante la ejecución

Ejemplo:

ENTRADA A, B

C = A + B

Aquí + es el operador de tiempo de ejecución, ya que depende de los valores que ingrese.