En estática a=c, b; ¿qué quieres decir?
Las variables estáticas significan que, aunque están definidas en una función, se comportarán como variables globales después de la definición. Después de llamar a la función, otras variables de la función desaparecerán, pero esta variable estática aún existe.
(Pero las variables estáticas siguen siendo diferentes de las variables globales. En un proyecto de varios archivos, las variables globales pueden ser utilizadas por todos los archivos, mientras que las variables estáticas solo son equivalentes a las variables globales en este archivo, y en otros archivos, no se reconocen. Pero no necesita saber mucho todavía)
El valor inicial de una variable estática se asigna en el momento de la compilación, no en el momento de la llamada a la función. Es decir, cuando se ejecuta su programa, C ya tiene el valor 3. Si la función f() se llama varias veces, no asignará el valor a C nuevamente cada vez que se llame a f(), pero dejará el valor de C sin cambios. En otras palabras, simplemente puedes pensar en el ejemplo anterior como:
int c = 3; //variable global c=3
Entero f (entero a)
{
int b = 0;
a=c, b; //c=3 cuando se llama a f() por primera vez, c=c cuando se llama por segunda vez =4.
Devuelve a;
}
Para a=c, b;
Esta oración es una expresión de coma, expresión de coma El general La forma de es expr1, expr2 que evalúa expr1 y expr2 respectivamente, y luego usa el valor de expr2 como el valor de toda la expresión.
Para este ejemplo específico, evalúa las expresiones a=c y b por separado, y luego usa el valor de b como el valor de toda la expresión.
Debido a que = tiene una mayor prioridad aquí, la expresión completa es equivalente a (a=c), b; no equivalente a a=(c, b);
Cuando f( ) se llama por primera vez, primero se ejecuta la expresión a=c y el resultado es el siguiente:
Asigne el valor de C a A, y luego C se incrementa en 1, por lo que el resultado es A = 3, C = 4.
Luego se ejecuta la expresión b. Después de la ejecución, b = 1, que también es el valor de toda la expresión de coma, pero este valor no se utiliza.
Esta función devuelve el valor de a, que es 3.
Cuando se llama a f() por segunda vez, primero se ejecuta la expresión a=c y el resultado es el siguiente:
Asigna el valor de C (que se ha convertido en 4 en este momento) a A, luego C se incrementa en 1, por lo que el resultado es A = 4, C = 5.
Luego se ejecuta la expresión b. Después de la ejecución, b = 1, que también es el valor de toda la expresión de coma, pero este valor no se utiliza.
Esta función devuelve el valor de a, que es 4.
Entonces el resultado final es 4.