Duda con código en C

Hola a todos,
Tengo una duda referente a la estructura switch del lenguaje c. A continuación os la expongo:
Tengo este trozo de código,

switch (expresión) {

case 0:
sentencia_0;
(aquí iría el break)

default:
sentencia_default;

}

La pregunta es, cuando se evalua expresión si el resultado es 0 ejecutará sentencia_0 y luego el default? Si es así para que solo ejecute sentencia_0 debo poner un break después de ejecutar sentencia_0 no?

No se si me he explicado bien...

Gracias de antemano y salu2 [360º]
Sí y sí.

EDITO: el case (constante) va con ":" al final, no con ":"
Por si acaso cuidadin:

switch(a)
{
case 1:
printf("soy el uno\n");
case 2:
printf("soy el dos\n");
/* break; */
case 3:
printf("soy el tres\n");
default:
printf("soy default\n");
};


Al ejecutarse con a=1 su salida sera :
soy el uno
soy el dos
soy el tres
soy default
---------
Si descomentamos el break, la salida sera:
soy el uno
soy el dos


A lo mejor pensais que es obvio, pero muchas veces produce lio a los principiantes.

Saludos.
Gracias a todos por contestar [360º]
Tengo un par de preguntas mas [angelito] :
-En lugar de usar "break" es lo mismo poner un "exit"?
-En el ejemplo de altair1 si a = 1, no mostraría solo "soy el uno" y "soy default", en lugar de mostrar todos los posibles valores?

Salu2 :cool:
Mmmmmmmmm, si pones un exit en lugar de un break, creo que chapas el programa.
Iba a intentar explicarme, pero conozco gente que lo hace mejor :-P :

From Python to C
Al final de la página 57 y las siguientes páginas te explica cómo funciona un switch (tranqui está en castellano) ;-)

Edito: Se me olvidaba. No, no es lo mismo break que exit, pruebalo tú mismo :)

Saludos

PD: También tengo uno de Python por si Ferdy quiere perderle el miedo [sati]
PD: También tengo uno de Python por si Ferdy quiere perderle el miedo [sati]


Jaja, en principio no estoy muy interesado por ahora :P aunque una referencia, nunca está de más.

- ferdy
[OFF-TOPIC]

Byte of Python escribió:Warning! Python is soon going to become your favorite programming language. :D


Conociendo Python

Bueno, pues para empezar a conocer un poco el lenguaje tienes:

Byte of Python
Tutorial en python.org

Para entrar más en materia, tenemos:

Python Library Reference
Global Module Index

Y, por último, tenemos libros de O'Reilly, que sino recuerdo mal es una editorial que te gusta (uno de Python + XML me vino muy bien):

Libros Python O'Reilly


Aquí tienes unas referencias (tú y quien sea claro xD). Si no gustan, alguna cosa más tendré a mano :-P


Experiencia personal:

Empecé con Introducción a la programación con Python, que está muy bien para aprender a programar, Python facilita mucho esta tarea y los autores se explican muy bien ;-).
A partir de ahí, un poquito de aquí y un poquito de allá.

Yo creo que con Byte of Python + Global Module Index es un buen comienzo si ya se tiene base de programación, sino sustituir o combinar el primero con el de Introducción.

Y por último, también tengo apuntes de algorítmica con Python y es curioso para conocer mejor las estrucutras de datos de Python y su uso para implementación de una buena variedad de algoritmos. Y añado a la oferta un pequeño pdf de resumen/recordatorio que permite ver algunas características del lenguaje rápidamente.

Legibilidad:

¿Perl? ¿C? Por dIOS!

while not done:
....do_something()

for elem in list:
....process_elem

suma = sum( [ i for i in xrange(N) ] )


Y llegó la revolución con Python 2.5 (PEP 308):
x = true_value if condition else false_value

Es decir, x = algo si cumple_cond sino lo_otro. ¡Puro lenguaje natural señora!


[/OFF-TOPIC]

Jo*er, como se enrolla uno. Espero que le sirva a alguien [+risas] y si queréis algo más, avisad y veré qué puedo hacer :-P

Bueno, y si alguien quiere añadir, criticar, invitarme a una copa... adelante [jaja]
Zackar escribió:Gracias a todos por contestar [360º]
Tengo un par de preguntas mas [angelito] :
-En lugar de usar "break" es lo mismo poner un "exit"?
-En el ejemplo de altair1 si a = 1, no mostraría solo "soy el uno" y "soy default", en lugar de mostrar todos los posibles valores?

Salu2 :cool:


Efectivamente 'exit' es para salir del programa completamente.

La filosofia del switch en C es la siguiente :
Si existe el 'case' correspondiente, entra a ejecutar el codigo a partir del 'case' correspondiente hasta el final del switch '}' salvo que encuentre un 'break' que hace que se salga del switch.

P.D. 1
Aprenderas mucho mas, si (como te han comentado) haces tus propios programas y los pruebas.
Si pese a todo no consigues entenderlo, entonces lo posteas.

Dicho con todo cariño, da la impresion de que no te has molestado mucho antes de postear.

Tambien es cierto que no sabemos cual es tu situación, a lo mejor no tienes medios para hacer pruebas.

Por cierto ¿Usas software libre?.
altair1 escribió:
Efectivamente 'exit' es para salir del programa completamente.

La filosofia del switch en C es la siguiente :
Si existe el 'case' correspondiente, entra a ejecutar el codigo a partir del 'case' correspondiente hasta el final del switch '}' salvo que encuentre un 'break' que hace que se salga del switch.

P.D. 1
Aprenderas mucho mas, si (como te han comentado) haces tus propios programas y los pruebas.
Si pese a todo no consigues entenderlo, entonces lo posteas.

Dicho con todo cariño, da la impresion de que no te has molestado mucho antes de postear.

Tambien es cierto que no sabemos cual es tu situación, a lo mejor no tienes medios para hacer pruebas.

Por cierto ¿Usas software libre?.


Lo único que me queda por hacer es probar el programa a ver los resultados. Antes de postear me lo he remirado mucho ya que es una práctica de la universidad, lo único que no he puesto el ejemplo que me piden por que quiero sacarlo yo mismo. Y si, uso software libre :)

Gracias a todos y salu2 [pos eso]

PD: Ya lo tengo solucionado!
10 respuestas