void foo() {
static int x;
}
void bar() {
static int x;
}
int main() {
foo();
bar();
}
Respuesta
Cada uno ve solo el suyo. Una variable no puede ser "visto" desde fuera del scope que está declarada en
Si, por el contrario, hizo esto:.
static int x;
void foo() {
static int x;
}
int main() {
foo();
}
continuación foo()
sólo ve su local de x
; el global x
ha sido "ocultado" por él. Pero los cambios en uno no afectan el valor del otro.
@FredOverflow: gracias por capturar ... –
¿hay espacios de nombres anónimos considerados de mejor estilo que los globales estáticos en C++? Los dos usos de "static int x;" (uno global, un local) parece complicar la pregunta. – Flexo
@awoodlannd: el uso de 'static 'para este propósito está obsoleto en C++ (D.2/1). Si es un mejor estilo depende de si la persona a quien le preguntas está de acuerdo con esa desaprobación ... –
Esto está perfectamente bien. En la práctica, el nombre real de la variable en la salida del compilador se puede considerar como algo similar a function_bar_x
, es decir, es responsabilidad del compilador asegurarse de que estos no entren en conflicto.
Las variables son distintas, cada función tiene su propio alcance. Entonces, aunque ambas variables duran la vida del proceso, no interfieren entre sí.
Los dos vars estáticos son diferentes.
Nada sucederá, ambas variables tienen el alcance y Theri MANTENER sus valores a llamar en la llamada
El compilador traduce cada variable de una manera única, como foo_x
y bar_x
en su ejemplo, por lo que están roscadas de manera diferente.
No haga esto, ya que su código será difícil de leer y mantener después de un tiempo ya que no podrá ver de inmediato a qué se refiere el x
.
- 1. ¿Qué sucede si lanzo ReleaseMutex() dos veces?
- 2. ¿Qué sucede si uso la misma identificación para varios widgets en diferentes diseños?
- 3. Variable estática en varias subclases diferentes corregidas
- 4. ¿Qué sucede si llamas al mismo repetidor dos veces en la misma colección?
- 5. declaran hacia adelante función estática C++
- 6. problemas que declaran enumeración estática, C#
- 7. ¿Qué sucede si dos categorías ObjC anulan el mismo método?
- 8. Utilizando la misma variable en varios archivos en C++
- 9. ¿Qué sucede cuando dos anotaciones diferentes tienen el mismo nombre?
- 10. una variable estática en c
- 11. ¿Qué sucede si dos objetos diferentes tienen el mismo código hash?
- 12. C# Copia variable de instancia de variable local en funciones de la misma clase
- 13. C++ variable estática
- 14. Lua - ¿declaración if con dos condiciones en la misma variable?
- 15. ¿Cómo usar dos Formularios Django diferentes en la misma plantilla?
- 16. ¿Por qué hay dos funciones getline() diferentes (si es que las hay)?
- 17. variable estática global vs variable estática en la función?
- 18. inicializando una variable estática en el encabezado
- 19. C++ Referencia indefinida a la variable estática
- 20. Utilice dos UIViewAnimationCurves diferentes en la misma animación
- 21. Desarrollar la misma aplicación en dos computadoras diferentes
- 22. Dos versiones diferentes de JQuery en la misma página HTML
- 23. unir la misma tabla dos veces en diferentes columnas
- 24. Variable global compartida en la biblioteca estática de C++
- 25. ¿Qué sucede si no devuelve un valor en C++?
- 26. establecer y obtener una variable estática de dos clases diferentes en Java
- 27. Interferencia estática variable ASP.net?
- 28. ¿Por qué declarar una variable o función estática en C?
- 29. ¿Qué usa el conjunto de funciones para verificar si dos objetos son diferentes?
- 30. estática si está en formato C++?
¿Dado ese código? Nada. –
No declaran la misma variable. Dos funciones diferentes nunca pueden declarar la misma variable local estática. –