Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Duda bucle for

Estas en el tema de Duda bucle for en el foro de C/C++ en Foros del Web. Tengo una pequeña duda: ¿en la condición del bucle for se puede declarar una variable o solo se pueden usar variables que estén ya declaradas? ...
  #1 (permalink)  
Antiguo 26/12/2015, 05:26
Avatar de Pedritogj11  
Fecha de Ingreso: octubre-2015
Ubicación: Murcia
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta Duda bucle for

Tengo una pequeña duda: ¿en la condición del bucle for se puede declarar una variable o solo se pueden usar variables que estén ya declaradas? Gracias
  #2 (permalink)  
Antiguo 26/12/2015, 11:07
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Duda bucle for

En C++ se pueden declarar variables tanto en la declaración del bucle como en el cuerpo del mismo. En C únicamente en el cuerpo del bucle:

Código C++:
Ver original
  1. for(int i=0; i<10; i++)
  2. {
  3.   int j=i*2;
  4.   std::cout << i << j << std::endl;
  5. }

Código C:
Ver original
  1. int i;
  2. for(i=0; i<10; i++)
  3. {
  4.   int j=i*2;
  5.   std::cout << i << j << std::endl;
  6. }
__________________
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.
  #3 (permalink)  
Antiguo 26/12/2015, 12:07
Avatar de Pedritogj11  
Fecha de Ingreso: octubre-2015
Ubicación: Murcia
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Duda bucle for

Muchas gracias por la respuesta :)
  #4 (permalink)  
Antiguo 02/01/2016, 06:53
 
Fecha de Ingreso: enero-2014
Mensajes: 60
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: Duda bucle for

hola pedrito, veras yo tuve la misma duda hace tiempo y si puedes definir la variable en la definicion del for solo necesitas para que te compile bien que el estandar de c sea superior a C89 tal como C99, lo que ocurre es que el C89 es el que viene por defecto y es el mas utilizado

esta es la pregunta que yo hice:
http://www.forosdelweb.com/f96/bucle...locks-1088399/
espero te sirva :)
  #5 (permalink)  
Antiguo 11/01/2016, 03:25
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Duda bucle for

Como rectificar es de sabios, añado ciertas correcciones que afectan a la respuesta que di originalmente.

Desde el estándar C99 sí es posible declarar variables dentro de los bucles, por lo que la siguiente estructura debería ser compilable también en C:

Código C:
Ver original
  1. for(int i=0; i<10; i++)
  2. {
  3.   int j=i*2;
  4.   printf("%d%d\n",i,j);
  5. }

Además, debido a que los lenguajes también evolucionan, empieza a no ser estándar utilizar los tipos de toda la vida (int, unsigned int, char, long, etc).

Para crear código más legible existe la librería stdint.h que incluye un tipado bastante más preciso:
  • Enteros con signo: int8_t (char), int16_t (short/int), int32_t (int/long), int64_t (long long)
  • Enteros sin signo: uint8_t, uint16_t, uint32_t, uint64_t

¿Por qué es mejor usar estos tipos? El tipado es más preciso (nos permite conocer de antemano el tamaño de la variable) y más legible ( mejor uint64_t que unsigned long long, no?)

Volviendo al código inicial y aplicando lo que acabo de comentar, sería entonces más correcto escribir lo siguiente:

Código C:
Ver original
  1. for(int32_t i=0; i<10; i++)
  2. {
  3.   int32_t j=i*2;
  4.   printf("%d%d\n",i,j);
  5. }

Que si, que el "profe" de turno puede decir que hay que usar int porque es lo que el conoce y son sus normas... pero recordad que hay vida después de la universidad y que esa vida no suele quedarse congelada en un punto determinado... yo creo que lo suyo es conocer tanto lo nuevo como lo antiguo para poder elegir siempre la mejor opción.

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.

Etiquetas: dudas, for()
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:28.