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:- Welche Struktur weist die main() Funktion i.A. auf ?
- Welchen Zahlenbereich kann man mit einem unsigned char abdecken?
- Was passiert wenn der Zahlenbereich überschritten wird ?
also zu
- weiß ich einfach nicht was der da hören will....
- ist ganz klar, von 0-255 (kann also den erweiterten ASCII Zeichensatz abdecken)
- 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 beklopptnervö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, einestruct
inmain()
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 einunsigned char
ein Bereich von 0-255 mindestens garantiert.Antwort für _master_:
Natürlich der exakt selbe wie fürsigned 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-255Antwort 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 inunsigned 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!