Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/12/2006, 13:42
Sanva
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 19 años, 2 meses
Puntos: 1
while (letra = getchar() && 1) //¿Error?

Hola a todos.

Estoy intentando aprender C/C++, y me he encontrado con algo curioso que no comprendo.

Parto de este código de ejemplo:
Código:
#include <stdio.h>
int main(){
	char letra;
	while (letra = getchar()){
		putchar(letra);
	}
	return 0;
}
Este programa lee el teclado y, cuando pulses intro, imprime la línea que has escrito, y vuelve a ponerse a leer el teclado.

Bien, pues me he puesto a probar cosas con la sintaxis de C y transformo el código así:
Código:
int main(){
	char letra;
	while (letra = getchar() && 1){
		putchar(letra);
	}
	return 0;
}
Y se produce algún error... se compila perfectamente y sin avisos, pero por alguna extraña razón ya no funciona como debería: Al pulsar intro me imprime una fila de cuadrados (en Linux, en Windows una fila de caritas sonrientes) del mismo tamaño de lo que yo haya escrito...

Me gustaría saber dónde está el problema, ya que yo pensaba que letra tomaría el valor devuelto por getchar, y esta (con su nuevo valor) sería comprobada como un true && true que pasaría a ejecutar el putchar con el valor de letra...

¿Dónde está el problema?

Gracias por vuestro tiempo.