te da 150 porque es el resultado de la suma de los valores que tienen 1, 2 y 3 en la tabla ascii.
getchar() te devuelve un entero, pero te esta devolviendo el valor de la tabla ascii del caracter que se ingresa...... si queres obtener el valor del numero ingresado, deberias restarle 48 a cada ingreso que se hace. 48 es el valor de 0 en la tabla.
Código C:
Ver originalint main(int argc, char** argv) {
int i=0, suma=0;
while (i<3) //supongamos que el numero es de 3 cifras.
{
i++;
}
printf("la suma es: %d",suma
); }
tene cuidado que si se ingresan letras, tambien se van a sumar.
saludos