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

514
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

0

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

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