¿Qué imprime el siguiente programa: #include int sum, count; vacío principal (vacío) { para (cuenta = 5; suma + = ‘cuenta;) printf (% d, suma);}?

(C) ryptoprogramming!
Tratemos de pensar qué podría ser eso.

#incluir

Bueno, esto debe haber sido una declaración de inclusión. Como veríamos printf más tarde, probablemente para el encabezado .

int suma, cuenta;

defina 2 variables de tipo int sin indicar sus valores iniciales. (tal vez 0`s, tal vez 0xDEADBEEF`s)
Ed .: Como lo notó Eric Korpela en los comentarios, el valor inicial siempre sería 0; consulte la sección de inicialización implícita.

vacío principal (vacío) {

declarar y comenzar a definir la función que sería la primera en ejecutarse – Función principal


Eh? Ese (elemento HTML br) no pertenece aquí. Probablemente todo el código fue publicado en algún foro y copiado desde allí. Eso también podría explicar la falta del archivo en la directiva #include , ya que se interpretó como una etiqueta HTML maliciosa y se eliminó.

para (cuenta = 5; suma + = “cuenta;)

Eso me recuerda la declaración for: el recuento se asigna como 5, en cada ciclo se agrega la suma 5 (tipo) y se verifica que no es 0, y si es verdadero, se ejecuta el cuerpo del bucle. El “en el medio no tiene sentido para mí, probablemente un error tipográfico. Quiero decir, no puede ser una segunda derivada. 😎

printf (% d, suma);

Este debería ser el cuerpo del bucle for . Según la definición de la función printf, el primer argumento debe ser la cadena, y % d imprime el valor pasado ( suma en este caso) en su representación decimal.

}

Esa declaración finaliza la definición de la función main ()


Entonces, considerando que hemos solucionado todos los problemas obvios, ¿qué haría este programa?

Imprimiría una cadena interminable de números que comienza con “510152025 …”
no conocemos el valor inicial de la suma , pero supongamos que es 0, en la mayoría de los entornos lo sería. Establecemos el conteo en 5 y nunca lo cambiamos. El resultado del enunciado sum += count es “verdadero” si después del valor de suma de sum no es 0. Si consideramos que int es una variable de 32 bits, entonces como 5 y 2 ^ 32 son primos, tenemos que realizar 2 ^ 32–1 operaciones antes de que la suma se vuelva 0 con respecto al desbordamiento y salgamos Y en cada iteración imprimiríamos el siguiente valor en suma . Como no agregamos espacios o líneas nuevas, imprimiría números sin nada entre ellos. Bueno, hasta cierto punto, obviamente. 😎

Curiosamente, en algún momento imprimirá “74914192429 …” pero dejaré probar esto como un ejercicio para el estudiante. 😎

Ummm … no estoy seguro de lo que estás tratando de hacer aquí, pero ese código no se compilará. Intente nuevamente con un fragmento de código que funcione y quizás podamos ayudarlo.