Duplicar posibles:
How are string literals compiled in C?comparación de direcciones y almacenamiento de cadenas
escribí el pequeño código a continuación. En este código, creo que se compararía la dirección de la primera y la segunda cadena "hola". Estoy confundido en esto. En primer vistazo, pensé que ambas cadenas se almacenarían en la memoria de solo lectura y, por lo tanto, tendrían una dirección diferente. Pero "igual" se imprimió después de la ejecución.
Cuando vi el objdump, no pude ver la cadena de hola. Entiendo que no he tomado una variable para almacenarlos, pero ¿dónde se guardará "hola"?
¿Se almacenará en STACK? o ¿Se almacenará en el segmento de código?
#include<stdio.h>
int main()
{
if ("hello" == "hello")
printf("\n equal ");
else
printf("\n not equal");
return 0;
}
Cuando cambié la condición if a if ("hello" == "hell1")
, "es igual a" se imprimieron. De nuevo, dónde y cómo se almacenan las cadenas. ¿Se almacenará en STACK? o ¿Se almacenará en el segmento de código?
Realmente agradecería que alguien aquí me brinde una respuesta detallada. Gracias
Si ve el desmontaje de esto, se dará cuenta de que no hay equivalente 'if' en absoluto! ¡Salida optimizada! –
posible duplicado de [Una pregunta básica: ¿cómo se compilan los literales de cadena en C?] (Http://stackoverflow.com/q/6680819/), [¿Por qué es "a"! = "A" en C?] (Http : //stackoverflow.com/q/4843640/), [C literales de cadena: ¿a dónde van?] (http://stackoverflow.com/q/2589949/) – outis