C/Visual C - duda printf

 
Vista:

duda printf

Publicado por armando (1 intervención) el 27/05/2003 16:04:13
alguien sabe la respuesta a estas preguntas????

*El resultado de ejecutar “(5!=(2^3)) ? printf(\\\"%04x\\\",123) : printf(\\\"%01x\\\",567);” debería ser:

*El resultado de ejecutar “printf( \\\"\\\\nValor: %d\\\\n\\\", 45&29 );” debería ser:

* El resultado de ejecutar “printf( \\\"\\\\nValor: %d\\\\n\\\", 15,4 );” debería ser:
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Análisis de expresiones y resultados de `printf` en C

Publicado por Alejandro (1286 intervenciones) el 24/06/2025 21:00:47
Armando, vamos a analizar cada una de las expresiones que has proporcionado y determinar el resultado de su ejecución.

1. Resultado de ejecutar `"(5!=(2^3)) ? printf(\"%04x\",123) : printf(\"%01x\",567);"`


- Análisis:
- Primero, evaluamos la expresión `5 != (2^3)`.
- En C, el operador `^` es el operador XOR bit a bit, no la potencia. Por lo tanto, `2^3` se evalúa como `2 XOR 3`, que es `1` (en binario: `10 XOR 11 = 01`).
- Entonces, `5 != 1` es `true`.
- Resultado:
- Dado que la condición es verdadera, se ejecuta `printf("%04x", 123)`.
- `123` en hexadecimal es `7B`, y con el formato `%04x`, se rellenará con ceros a la izquierda, resultando en `007b`.

Respuesta: `007b`

2. Resultado de ejecutar `printf("\nValor: %d\n", 45&29);`


- Análisis:
- Primero, evaluamos `45 & 29`.
- En binario:
- `45` es `00101101`
- `29` es `00011101`
- Haciendo la operación AND bit a bit:
1
2
3
4
00101101
00011101
---------
00001101 (que es 13 en decimal)
- Resultado:
- Por lo tanto, `printf("\nValor: %d\n", 13);` imprimirá `Valor: 13`.

Respuesta: `Valor: 13`

3. Resultado de ejecutar `printf("\nValor: %d\n", 15, 4);

`
- Análisis:
- Aquí, `printf` está recibiendo más argumentos de los que necesita. La cadena de formato solo tiene un especificador de formato `%d`, que espera un solo argumento.
- `15` se pasará como argumento, pero `4` será ignorado.
- Resultado:
- Por lo tanto, `printf("\nValor: %d\n", 15);` imprimirá `Valor: 15`.

Respuesta: `Valor: 15`

Resumen de respuestas:


1. `007b`
2. `Valor: 13`
3. `Valor: 15`
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar