elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] error: 'for' loop initial declarations are only allowed in C99 mode ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] error: 'for' loop initial declarations are only allowed in C99 mode ?  (Leído 3,108 veces)
TØtti

Desconectado Desconectado

Mensajes: 13


Ver Perfil
[C] error: 'for' loop initial declarations are only allowed in C99 mode ?
« en: 29 Noviembre 2016, 04:06 am »

Buenas. Estaba viendo la sintaxis de C y coloco el siguiente código:

Código
  1. int main(int argc, char const *argv[])
  2. {
  3.   int var[] = {20, 30, 40, 50};
  4.   for(int i; i < sizeof(var); i++)
  5.   {
  6.       printf("%d-%d", i, var[i]);
  7.   }
  8.  
  9.    return 0;
  10. }
  11.  

y da el error: 'for' loop initial declarations are only allowed in C99 mode

Estoy usando CodeBlocks 13.12 y el compilador es GNU CCC


« Última modificación: 3 Diciembre 2016, 03:13 am por TØtti » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] error: 'for' loop initial declarations are only allowed in C99 mode ?
« Respuesta #1 en: 29 Noviembre 2016, 04:13 am »

estás usando C y los standard comunes de  C son los antiguos (c89 y 90 si no mal recuerdo)

en estos standards no puedes hacer cosas como declarar una variable dentro de la declaración de un ciclo

Código
  1. for(int i; i < sizeof(var); i++)

tienes 2 opciones:
declararlo fuera del ciclo
Código
  1. int i;
  2. for(i=0; i < sizeof(var); i++)

o compilar como c99 que es la versión donde por primera vez tiene soporte una serie de elementos, como declaración en ciclos
https://en.wikipedia.org/wiki/C99


por otro lado tienes un error... declaras "i" pero no le das un valor inicial... entonces que valor contiene "i" al ser declarado? (si dices que 0, normalmente la respuesta es incorrecta)


« Última modificación: 29 Noviembre 2016, 04:15 am por engel lex » En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
TØtti

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: [C] error: 'for' loop initial declarations are only allowed in C99 mode ?
« Respuesta #2 en: 2 Diciembre 2016, 19:11 pm »

estás usando C y los standard comunes de  C son los antiguos (c89 y 90 si no mal recuerdo)

en estos standards no puedes hacer cosas como declarar una variable dentro de la declaración de un ciclo

Código
  1. for(int i; i < sizeof(var); i++)

tienes 2 opciones:
declararlo fuera del ciclo
Código
  1. int i;
  2. for(i=0; i < sizeof(var); i++)

o compilar como c99 que es la versión donde por primera vez tiene soporte una serie de elementos, como declaración en ciclos
https://en.wikipedia.org/wiki/C99


por otro lado tienes un error... declaras "i" pero no le das un valor inicial... entonces que valor contiene "i" al ser declarado? (si dices que 0, normalmente la respuesta es incorrecta)

Gracias. Pues acabo de probar y es 2, que a diferencia de los demás tipos sin me da 0. E incluso con short.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C] error: 'for' loop initial declarations are only allowed in C99 mode ?
« Respuesta #3 en: 2 Diciembre 2016, 19:18 pm »

no siempre será 2 XD y con demás tipos tambien tienes que darle valor ya que no sabes cuando te dará un valor inesperado
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines