[C con Clase] no entiendo porque no muestra los datos este for...
Steven Davidson
srd4121 en njit.edu
Jue Abr 7 01:23:39 CEST 2011
Hola Goos,
On 4/6/2011 5:56 PM, goosfancito wrote:
> hola.
> Soy nuevo en C++ (c tampoco vi nunca)
>
> mirando los tutos me mande a hacer este bucle
>
> -------8<---------------------------
>
> #include<stdio.h>
>
> int main(){
> for (int nItem=0;nItem<10;nItem++) {
> printf("Paso por: %d\n",nItem);
>
> if (nItem=5)
Aquí tienes el error lógico. No es un error gramatical, pero no es lógico.
El problema se basa en que has usado el operador = de asiganción en
lugar de == que es lo que quieres para comprobar si los operandos son
iguales. Esto es,
if( 5 == nItem )
He cambiado los operandos, para que veas que si te equivocas otra vez,
el compilador te dará un error; esto es, si escribes,
if( 5 = nitem )
el compilador te marcará un error, ya que no puedes asignar un valor a
un valor literal, como es 5. Vamos, no puedes cambiar 5.
> break;
> else
> printf("sin break: %d\n",nItem);
> }
> }
Te falta agregar una sentencia 'return'; por convenio, se retorna 0
(cero) para indicar que el programa terminó con éxito.
No aconsejo usar 'break'. Si hay problemas, puede ser difícil
detectarlos al usar 'break', como también 'continue' y 'goto'. Si la
condición '5 == nItem' puede provocar la ruptura del bucle 'for',
entonces obviamente lo controla. Por lo tanto, esta condición debería
pertenecer a la condición del bucle. Esto es,
// Caso particular: nItem = 0
printf( "Paso por: 0\n" );
// Caso general: 0 < nItem < 10 ó nItem = 5
for( int nItem=1; nItem<10 && 5 == nItem; nItem++ )
{
printf( "sin break: %d\n", nItem );
printf( "Paso por: %d\n", nItem );
}
Entiendo que has hecho el programa a modo de ejercicio, pero te lo
comento para que lo tengas en cuenta para los diseños de futuros programas.
> compilo asi:
>
> $ gcc -o tut01.o tut01.cpp -lstdc++
>
Sugiero usar g++ para compilar programas de C++. Por cierto, no deberías
necesitar indicar la biblioteca estándar explícitamente.
Espero que todo esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase