Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

153
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!