[ Foro de C# ]

Conversion de cadena a entero

09-Nov-2014 22:46
Invitado (WoRm1998)
1 Respuestas

Hola amigos! Alguien me podría ayudar con un ejercicio? Estoy leyendo un libro de programación en C# y el ejercicio que no puedo hacer dice: "Pedir al usuario dos números de dos cifras("byte"), calcular su multiplicación , que se  deberá guardar en un "ushort", y mostrar el resultado en pantalla"
Yo lo hice de la siguiente forma:

 
using System;
public class Aprendiendo
{
	public static void Main()
	{
		byte n1,n2,m1;
		Console.WriteLine("Ingrese 2 numeros de 2 crifas:");
		n1=Convert.ToByte(Console.ReadLine());
		n2=Convert.ToByte(Console.ReadLine());
		m1=n1*n2;
		ushort b3=m1;
		Console.WriteLine(b3);
	}
}
 


Y en el Mono me sale: Cannot implicitly convert type "int"  to "byte"
No entindo porque me sale que no puedo convertir un int en un byte si nunca puse una variable de tipo "int".


09-Nov-2014 23:01
Nacho Cabanes (+32)

Piensa en los byte 200 y 100. Ambos son valores válidos para un dato de tipo "byte", pero su multiplicación no lo es: 200 * 100 = 20.000, que claramente no cabe en un "byte".

El compilador sabe que ese tipo de problemas puede ocurrir, y por eso no te deja que intentes guardar el resultado de la mutiplicación en otro byte.

Por eso, el ejercicio te dice que guardes el resultado en un "ushort". Elimina tu variable "m1" y guarda directamente la multiplicación en b3.

Compilará sin problemas si haces algo como

 
int b3=n1*n2;
 


o bien

 
ushort b3=Convert.ToUInt16(n1*n2);
 








(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)