Page 47

1 Introducci´on a C

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

2 3 4 5

int main(void) { int a, b;

6

a = 2147483647; b = a + a; printf ("%d\n", a); printf ("%d\n", b); return 0;

7 8 9 10 11 12

}

Al compilarlo y ejecutarlo hemos obtenido la siguiente salida por pantalla: 2147483647 -2

¿Qu´e ha ocurrido? · 25 Dise˜ na un programa C que solicite el radio r de una circunferencia y muestre por pantalla su per´ımetro (2πr) y su a ´rea (πr2 ). · 26 Si a es una variable de tipo char con el valor 127, ¿qu´e vale ~a? ¿Y qu´e vale !a? Y si a es una variable de tipo unsigned int con el valor 2147483647, ¿qu´e vale ~a? ¿Y qu´e vale !a? · 27 ¿Qu´e resulta de evaluar cada una de estas dos expresiones? a) 1 && !!!(0 || 1) || !(0 || 1) b) 1 & ~~~(0 | 1) | ~(0 | 1) · 28 ¿Por qu´e si a es una variable entera a / 2 proporciona el mismo resultado que a >> 1? ¿Con qu´e operaci´ on de bits puedes calcular a * 2? ¿Y a / 32? ¿Y a * 128? · 29

¿Qu´e hace este programa? swap.c

swap.c 1

#include <stdio.h>

2 3 4 5 6 7

int main(void) { unsigned char a, b; printf ("Introduce el valor de a (entre 0 y 255): "); scanf ("%hhu",&a); printf ("Introduce el valor de b (entre 0 y 255): "); scanf ("%hhu",&b);

8

a ^= b; b ^= a; a ^= b;

9 10 11 12

printf ("Valor de a: %hhu\n", a); printf ("Valor de b: %hhu\n", b);

13 14 15

return 0;

16 17

}

(Nota: la forma en que hace lo que hace viene de un viejo truco de la programaci´on en ensamblador, . . . . . . . . . . . . . .donde . . . . . . hay . . . . .ricos . . . . .juegos . . . . . . .de . . .instrucciones . . . . . . . . . . . . .para . . . . .la . . .manipulaci´ . . . . . . . . . . o. .n. .de . . datos . . . . . . bit . . . .a. .bit.) ....

1.13.

Conversi´ on impl´ıcita y expl´ıcita de tipos

El sistema de tipos escalares es m´ as r´ıgido que el de Python, aunque m´as rico. Cuando se eval´ ua una expresi´ on y el resultado se asigna a una variable, has de tener en cuenta el tipo de todos los operandos y tambi´en el de la variable en la que se almacena. Ilustraremos el comportamiento de C con fragmentos de programa que utilizan estas variables: Introducci´ on a la Programaci´ on con C

41

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement