Pregunta básica de C sobre los valores de retorno

Solo estoy aprendiendo C y estoy usando xCode para ello (no estoy seguro de si es importante). Este codigo

#include  int main (int argc, const char * argv[]) { int myInt; myInt = 2; myInt *= ( (3*4) / 2 ) - 9; printf("myInt = %d", myInt); return myInt; } 

Produce esto:

 Session started at 2009-11-09 15:51:15 -0500.] myInt = -6 The Debugger has exited with status 250.The Debugger has exited with status 250. 

El printf es correcto, pero ¿qué pasa con el retorno?

A) haciéndolo envolver debajo, y

B) muestra los resultados dos veces? (para aclarar, si puse return 0; solo imprime la línea “el depurador ha salido” una vez, con el valor como 0)

¡Gracias!

Los códigos de retorno se interpretan como enteros sin signo con el rango 0-255 por el shell.

En Unix, el valor de retorno de un progtwig está limitado al rango 0-255 (sí, el tipo de retorno de main es int, pero eso es una anomalía histórica). Consulte esta documentación de GNU sobre el estado de salida .

En cuanto al mensaje “El depurador ha salido con el estado 250” se muestra dos veces, proviene del proceso que está ejecutando su comando y, por lo tanto, no tiene control sobre él.

Asumo que xcode trata el estado de salida como 00-FF (0-255) y -6 = 250 en ese caso

Compruebe la página del manual en exit() y _Exit() :

Ambas funciones hacen que los ocho bits de orden inferior del argumento de estado estén disponibles para un proceso principal […]

El ajuste debajo de (como lo describe) es el resultado de no poder generar un carácter LF (salto de línea) como parte de su llamada a printf (). Puede corregirlo agregando \ n a la cadena de formato de impresión. Cambie su código a esto:

 #include  int main (int argc, const char * argv[]) { int myInt; myInt = 2; myInt *= ( (3*4) / 2 ) - 9; printf("myInt = %d\n", myInt); return myInt; } 

En cuanto a la duplicación ‘El depurador ha salido con el estado 250’. esa es una función de su IDE / depurador, y no el resultado de su código. Como explicaron otros, -6 = 0xFFFFFFFA, que cuando se trunca a 8 bits y se trata como no firmado, es igual a 250 en decimal.

Su código de retorno para main debe ser 0 a menos que esté en error. Esta es una convención común en Unix y no daña nada en Windows. http://en.wikipedia.org/wiki/Main_function_%28programming%29

-6 se representa como 2 complementos de 6 en binario para almacenarlo en la memoria.