Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/12/2015, 00:28
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: duda con muestra por pantalla C

Código C:
Ver original
  1. for(c='A';c<='Z' ;--c)

Este bucle se repite mientras que C sea menor o igual que 'Z', eso sí, en cada iteración estás decrementando c. El tipo char es con signo, esto quiere decir que tiene 255 valores positivos, el 0 y 256 valores negativos. Si miras la tabla ASCII verás que los primeros caracteres de la tabla no son imprimibles. Y que pasa con los negativos? Si has visto cómo se almacenan los números en la memoria entenderás que un mismo binario se puede interpretar de diferentes maneras (con signo, sin el, con mantisa y exponente, BCD, ...). El programa va a buscar un carácter a mostrar y dado que las tablas no tienen valores negativos, convertirá el número en unsigned. Cuando C alcance el valor -256 y le toque decrementarse pasará a valer 255, pasará a ser mayor que 'Z' y te saldrás del bucle.

El bucle no es infinito simplemente porque en algún momento se deja de cumplir la condición necesaria para repetirse.

Si lo que quieres es que el bucle vaya de Z a A tienes que dejarlo así
Código C:
Ver original
  1. for(c='Z';c>='A' ;--c)

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.