Estoy implementando un tipo que almacene numeros entre 0 y 255, es decir de 1 byte de tamaño.
Para ello he escrito este codigo en un ejemplo con angulos, pero al ser realmente tipo char obtengo resultados como caracteres, y si hago un casting a int en el cout obtengo resultados numericos pero sin sentido:
Alguna manera de poder usar int de tamaño 1 byte? Es solo una cuestión de optimización de memoria.
Para ello he escrito este codigo en un ejemplo con angulos, pero al ser realmente tipo char obtengo resultados como caracteres, y si hago un casting a int en el cout obtengo resultados numericos pero sin sentido:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cmath>
using namespace std;
typedef char byte;
struct stAngulo {
short grados;
byte minutos;
byte segundos;
};
stAngulo operator+(stAngulo a1, stAngulo a2); // a1+a2
stAngulo operator-(stAngulo a1, stAngulo a2); // a1-a2
int main(int argc, char *argv[]) {
stAngulo angulo1 = { 23, 15, 20 }, angulo2 = { 2, 35, 29 };
stAngulo suma = angulo1 + angulo2;
cout << "Grados: " << suma.grados << "\n\nMinutos: " << suma.minutos << "\n\nSegundos: " << suma.segundos << endl;
cin.get();
return 0;
}
stAngulo operator+ (stAngulo a1, stAngulo a2) {
stAngulo temp = {
a1.grados + a2.grados,
a1.minutos + a2.minutos,
a1.segundos + a2.segundos,
};
do {
++temp.minutos;
temp.segundos -= 60;
} while (temp.segundos >= 60);
do {
++temp.grados;
temp.minutos -= 60;
} while (temp.minutos >= 60);
return temp;
}
stAngulo operator-(stAngulo a1, stAngulo a2) {
stAngulo temp = {
a1.grados - a2.grados,
a1.minutos - a2.minutos,
a1.segundos - a2.segundos,
};
do {
--temp.minutos;
temp.segundos = abs(temp.segundos);
} while (temp.segundos <= 0);
do {
--temp.grados;
temp.minutos = abs(temp.minutos);
} while (temp.minutos <= 0);
return temp;
}
Alguna manera de poder usar int de tamaño 1 byte? Es solo una cuestión de optimización de memoria.