Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

154
Visualizações
¿Un programa C de hola mundo para principiantes?

Como principiante, escribí el siguiente programa hola mundo en Code::Blocks -

 #include<stdio.h> main() { printf("Hello world \n"); }

Ahora, hago clic en 'Crear y ejecutar', y la pantalla de salida muestra 'Hola mundo'.

Sin embargo, el libro que estoy leyendo me sugiere eliminar ciertos elementos del programa para ver qué errores ocurren en el programa.

Hice 2 cambios. Primero, eliminé \n del programa. (El libro me dice que sin \n, habrá un error al ejecutar el programa) Sin embargo, cuando hago clic en 'Crear y ejecutar', la pantalla de salida me da la misma salida que cuando no tenía ningún error.

El segundo cambio que hice fue quitar #include del programa. Incluso ahora, la pantalla de salida muestra la misma salida que cuando no tenía errores.

¿Por qué está pasando esto? Por favor, dime cómo arreglar esto.

El compilador que estoy usando es el compilador GNU GCC.

EDITAR: Como se sugirió, agregué -wall, -wextra, -pedantic. Ahora, cuando hago clic en 'Crear y ejecutar', dice que no se puede encontrar -1-wall, -1-wextra y -1-pedantic y el programa no se ejecuta. ¿Cómo arreglar esto ahora?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Caso 1: tu libro está equivocado. Eliminar \n nunca generará ningún error. \n significa nueva línea que imprimirá una nueva línea después de Hello World .

Caso 2: Puede ser que no esté compilando el código nuevamente, porque sin incluir el stdio (significa entrada/salida estándar) no puede invocar la printf() si usa los estándares C más nuevos (C99, C11). Leer más sobre stdio.h .

Tenga en cuenta que, en el estándar anterior a C99, si elimina el prototipo ( #include <stdio.h> ), C proporcionará automáticamente una declaración implícita para una función. Que se verá así:

 int printf();

significa que tomará cualquier número de argumentos y devolverá int . Pero en C99 se eliminó la desaceleración implícita. Entonces, lo más probable es que su compilador no se enfrente a C99.

¡Echa un vistazo aquí , compila bien!

Lea más sobre las declaraciones implícitas en c .

EDITAR: Como AnT mencionó en el comentario, eliminando #include<stdio.h> , la llamada a printf se "compilará" en la versión de idioma anterior a C99. Sin embargo, la llamada producirá un comportamiento indefinido. Las funciones variables (como printf) deben declararse con prototipo antes de la llamada, incluso en C89/90. De lo contrario, el comportamiento no está definido.

over 4 years ago · Santiago Trujillo Relatório

0

  1. Su programa ya contiene un error. Las funciones en C moderno deben declararse con un tipo de retorno especificado explícitamente. Su main() se declara sin un tipo de devolución, lo que ha sido ilegal desde C99.

  2. Hay diferentes tipos de "errores". Algunos errores hacen que el compilador emita un mensaje de diagnóstico. Algunos errores simplemente hacen que su programa se comporte de manera impredecible en tiempo de ejecución (muestra un comportamiento indefinido). Este último puede ser más difícil de detectar, ya que "impredecible" puede verse perfectamente bien a primera vista.

    En su caso, eliminar #include <stdio.h> activará un mensaje de diagnóstico en el compilador compatible con C99, pero conducirá a un comportamiento indefinido en el compilador C89/90. El comportamiento indefinido aún podría producir la misma salida de pantalla que antes.

over 4 years ago · Santiago Trujillo Relatório

0

No ve ningún problema al eliminar \n porque '\n' es un carácter de nueva línea. Anteriormente, su salida era **"Hello World

"** (nueva línea) Y ahora su salida es "Hello World" Es por eso que no ve ninguna diferencia.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda