unbeantwortete Prüfungsfrage



  • Hallöchen zusammen,

    also wir hatten grade Prüfung und ich wusste da die antwort auf
    zwei ganz bestimmte (doofe, leichte ??) Fragen nicht.
    Würd mich aber trotzdem brennend interessieren,
    also:

    1. Welche Struktur weist die main() Funktion i.A. auf ?
    2. Welchen Zahlenbereich kann man mit einem unsigned char abdecken?
    3. Was passiert wenn der Zahlenbereich überschritten wird ?

    also zu

    1. weiß ich einfach nicht was der da hören will....
    2. ist ganz klar, von 0-255 (kann also den erweiterten ASCII Zeichensatz abdecken)
    3. auch keine Ahnung, bezieht sich aber auf Frage 2)

    🙂
    Vielleicht sind die Antworten auch einfach zu leicht, das man da nicht draufkommt wenn man wie bekloppt 😕 nervös 😕 in der Prüfung sitzt, naja jetzt ist eh vorbei, hat aber dennoch supi geklappt 👍

    Vielen Dank schonmal und allen anderen Studis schöne "Semesterferien"



  • 1. main() ist eine ganz normale Funktion, die entweder keine Parameter oder zwei Parameter (int argc,char*argv[]) entgegennimmt und einen int zurückliefert.
    (oder du fragst deinen Lehrer, was er erwartet hätte)

    2. 0 bis UCHAR_MAX (der Wert ist in <limits.h> definiert und mindestens 255)

    3. Modulo-Arithmetik - bei Bereichsüberschreitungen wird nur der Rest bezüglich UCHAR_MAX+1 (256) behalten und die überstehenden Binärstellen wandern in den Abfall.



  • Aufgabe 1)
    Antwort für Programmierer:

    int main()
    {
        return 0;
    }
    

    Antwort für _master_:
    Keine, es besteht laut Standard keine Verpflichtung, eine struct in main() unterzubringen.

    Antwort für K&R-Programmierer:

    main()
    {
    
    }
    

    Antwort für noob:

    void main()
    {
    
    }
    

    Aufgabe 2)
    Antwort für Programmierer:
    Laut Standard wird für ein unsigned char ein Bereich von 0-255 mindestens garantiert.

    Antwort für _master_:
    Natürlich der exakt selbe wie für signed char ! Es ändert sich lediglich die Wertigkeit, der Bereich bleibt der selbe...

    ZahlenBEREICH:
    --------------
    signed char: 8 bit
    unsigned char: 8 bit 
    2[h]8[/h] = 256 => 0-255.
    Wertigkeit:
    -----------
    signed char = -127 bis 127 => 0-255
    unsigned char = 0 bis 255  => 0-255
    

    Antwort für K&R-Programmierer:
    0-255

    Antwort für Systemprogrammierer:

    1 char = 1 byte
    1 bye = 8 bit (=> Exponent 8)
    1 bit = 0 / 1 (=> Basis 2)
    2[h]8[/h] = 256 ( - 1)
    Der Zahlenbereich eines unsigned char geht von 0 bis 255.
    

    Aufgabe 3:
    Antwort für einen Programmierer:
    Es findet ein Überlauf statt, d.h. der Wert schlägt von der größten in unsigned char darstellbaren Zahl in die kleinste um. Beispiel:

    255 
     +    1
        ---
          0
    

    Antwort für _master_:
    Es wird das Ergebnis aus wert % 28 angenommen.

    Antwort für Systemprogrammierer:
    Es gibt einen Bitüberlauf. Beispiel:

    11111111
    +   00000001
    Ü  11111111
        --------
        00000000
    

    Der überstehende Übertrag wird verworfen.

    Wenn der Lehrer dir also keine Punkte geben will, dann liste ein paar der Möglichkeiten hier auf, erkläre, dass die Frage ungenau gestellt wurde und dränge ihn dazu, die Frage aus dem Test zu streichen.



  • proggaholic schrieb:

    ...
    signed char = -128 bis 127
    

    <pedantic>
    garantiert sind -127 bis +127
    </pedantic>



  • Joah, stimmt natürlich.
    Danke!


Anmelden zum Antworten