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

503
Views
Funciona bien en C++, pero error de tiempo de ejecución en C

Tengo este código aquí ::

 int f(int x, int *py, int **ppz) { int y, z; **ppz += 1; z = **ppz; *py += 2; y = *py; x += 3; return x + y + z; } int main() { int c, *b, **a; c = 4; b = &c; a = &b; printf( "%d\n", f(c,b,a)); printf( "%d\n", c); }

(Por favor, elija los archivos de encabezado en consecuencia)

Cuando ejecuto este código como un programa C++, funciona sin problemas. Pero, cuando lo ejecuto como un programa en C, completa su ejecución, imprime todos los valores, pero en la última línea del código, da un error de tiempo de ejecución. Adjunté un depurador y al final del programa (mientras ejecutaba este código en C) al hacer clic en Step-Over, me lleva a un archivo min_gw, que se parece a esto:

 __mingw_CRTStartup() __mingw_CRTStartup+208: mov %eax,%ebx __mingw_CRTStartup+210: call 0x407fb0 <_cexit> __mingw_CRTStartup+215: mov %ebx,(%esp) __mingw_CRTStartup+218: call 0x408088 <ExitProcess@4> __mingw_CRTStartup+223: nop

¿Qué es este archivo? ¿Y por qué falla el código en C?

Referencias de Ideone ::

C :: http://ideone.com/sDbqnI

C++ :: http://ideone.com/Ubb71k

Gracias por cualquier ayuda de antemano.. :)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Todas las versiones de C++ y C desde C99 agregan un return 0; al final de la principal antes de caer al final.

C89 (que es el valor predeterminado para la mayoría de los compiladores) no lo hace, por lo que es UB si realmente regresa de main cayéndose del final.

Editar: en la práctica (suponiendo que se está ejecutando sin desinfectantes), esto significa que devolverá lo que sea que ya esté en $eax , es decir, el valor de retorno de la última función. Dado que printf generalmente devuelve un valor distinto de cero, eso se trata como una falla.

over 4 years ago · Santiago Trujillo Report

0

Olvidó la declaración de devolución al final de main que indica el éxito.

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!