dword, word und byte addieren



  • Hallo zusammen,

    ich versuche gerade etwas Durchblick zu schaffen in der Welt der bits und bytes.

    Zum testen hab ich mir das unten angehängte Programm geschrieben.
    Bei diesem Programm soll man nach Auswahl eine BYTE, ein WORD oder ein DWORD zu einem DWORD hinzuaddieren können. Aber mit dem Output komm ich nicht 100%ig mit.

    Wie führe ich eine Addition zweier verschiedener Datentypen korrekt durch?

    #include <iostream>
    
    using namespace std;
    
    typedef unsigned char BYTE;
    typedef unsigned short WORD;
    typedef unsigned long DWORD;
    
    int main()
    {
    	int choose = 0;
    	BYTE byte = 0;
    	WORD word = 0;
    	DWORD dword = 0, collector_dword = 0;
    
    	while (choose != 5) {
    		cout << endl
                 << "<1> add byte" << endl
                 << "<2> add word" << endl
                 << "<3> add dword" << endl
                 << "<4> flush collector dword" << endl
                 << "<5> exit" << endl
                 << ">";
    		cin >> choose;
    		switch (choose) {
    			case 1:
    				cout << "byte2add: ";
    				cin >> byte;
    				cout << endl << "byte: " << byte << endl;
    				collector_dword  += byte;
    				cout << "collector dword: " << collector_dword << endl;;
    				break;
    			case 2:
    				cout << "word2add: ";
    				cin >> word;
    				cout << endl << "word: " << word << endl;
    				collector_dword  += byte;
    				cout << "collector dword: " << collector_dword << endl;
    				break;
    			case 3:
    				cout << "dword2add: ";
    				cin >> dword;
    				cout << endl << "dword: " << dword << endl;
    				collector_dword  += dword;
    				cout << "collector dword: " << collector_dword << endl;
    				break;
    			case 4:
    				cout << endl << "collector dword flushed" << endl;
    				collector_dword  = 0;
    				break;
    			case 5:
    				cout << "exit" << endl;
    				break;
    			default:
    				cout << endl;
    				break;
    		}
    	}
    	return 0;
    }
    


  • pekster schrieb:

    Aber mit dem Output komm ich nicht 100%ig mit.

    Kleiner Tip: vielleicht wäre es sinnvoll, den Output mal zu zeigen (ein Beispiel), und zu sagen warum du da nicht mitkommst...



  • bei case 2, wo du eig ein word addieren willst,
    liest du zwar auch ein word ein, addierst aber ein byte 😉

    case 2:
                    cout << "word2add: ";
                    cin >> word;
                    cout << endl << "word: " << word << endl;
                    collector_dword  += byte;    // <-- HIER!
                    cout << "collector dword: " << collector_dword << endl;
                    break;
    


  • Jep habe ich eben auch gemerkt.
    Die Addition von WORD klappt somit auch wunderbar.

    Mein Problem liegt bei dem BYTE.
    Wie kann ich die unsigned char Variable als dezimalen Wert einlesen?

    In einem unsigned char sollte ich ja die Werte von 0-255 darstellen können.

    Momentan ließt er nur ein einzelnes Zeichen ein und addiert dann den ASCII-Wert des Zeichens.



  • lies einen int ein und caste den nach Byte.
    der Compiler wird sonst char immer als ein Zeichen betrachten, auch wenn es theoretisch auch ein Zahlenwert sein kann.



  • dank dir, jetzt läuft die sache


Log in to reply