Quizze Flashcards
Welche der folgenden Aussagen beschreibt den Linker (Binder)? (2 richtige Antworten)
- Der Linker wandelt die symbolischen Adressen der Funktionen und Variablen der Module in Speicheradressen um.
- Der Linker fügt Objektdateien und Bibliotheken zu einer ausführbaren Datei zusammen
- Der Linker optimiert die Zugriffe aus einem C-Modul auf globale static-Variablen eines anderen C-Moduls.
- Der Linker übersetzt den Quellcode, wodurch eine Objektdatei (*.obj oder *.o) erzeugt wird.
1., 2.
1.Dies beschreibt eine der Hauptaufgaben des Linkers, nämlich die Auflösung von symbolischen (oder logischen) Adressen zu tatsächlichen Speicheradressen, die im finalen ausführbaren Programm verwendet werden.
2.Der Linker nimmt die kompilierten Objektdateien (.o oder .obj) und ggf. Bibliotheken und fügt sie zu einer einzelnen ausführbaren Datei zusammen.
Welches Ergebnis liefert die folgende Operation:
4 «_space;2; 4»_space; 2;
- 32, 0
- 16, 1
- 2, 8
- 32, 1
2.
In der Linksverschiebung werden die Bits nach links geschoben, und die freigewordenen Stellen rechts werden mit Nullen aufgefüllt. Wenn dabei keine Bits aus dem linken Ende hinausgeschoben werden (was bei einer ausreichend großen Bitbreite der Fall ist), gehen keine Informationen verloren.
Ausgabe der Arithmetischen Ausdrücke
x = 5 * 9 % 4
y = - 3 * ++x + 3 * 18 % 7
- x = 5 , y = -6
- x = 1 , y = -1
- x = 5 , y = -11
- x = 2 , y = -1
4.
auf dekrement achten
Welche der nachfolgenden Definitionen ist falsch?
- long int a;
- double int b;
- unsigned int c;
- short int c;
2.
Welche Zeile enthält einen Syntaxfehler?
- a = b+++c;
- a = b += ++c;
- a = -b++%c;
- a = b++ = +c;
4.
Der Anfangswert einer lokalen, nicht statischen Variablen, die ohne Initialisierung definiert wurde, ist:
- 0.
- Abhängig von Compiler.
- Undefiniert.
3. Undefiniert
Was ist die Ausgabe des folgenden Codes?
#include <stdio.h> int fun(int a) { return a*a; } int main(int argc, char *argv[]){ int k=10; printf("k=%d\n", fun(fun(fun(k)))); return 0;}
- 1000000
- 1000
- 100
- 100000000
4. 100000000
Gegeben sei folgender Code. Markieren Sie korrekte Aussagen. (2 richtige, 2 falsche)
#include <stdio.h> int f(double d){ return 7; } int main(){ printf("%i", f(1.5f)); return 0; }
Für jede Aussage muss entschieden werden: [richtig] oder [falsch]
richtig, falsch:
1. Das Programm gibt eine 7 an das Betriebssystem zurück.
2. Das Programm erzeugt eine 7 als Ausgabe.
3. Das Programm gibt eine 0 an das Betriebssystem zurück.
4. Der Code compiliert nicht.
richtig:
2. Das Programm erzeugt eine 7 als Ausgabe.
3. Das Programm gibt eine 0 an das Betriebssystem zurück.
falsch:
1. Das Programm gibt eine 7 an das Betriebssystem zurück.
4. Der Code compiliert nicht.
Wie oft wird „Programmierung in C“ ausgegeben?
int x; for(x=-1; x<=10; x++){ if(x < 5) continue; else break; printf("Programmierung in C"); }
- 0
- 5
3.12
4.10
1. 0
Welche Ausgabe erzeugt das folgende Programm?
#include <stdio.h> int func(){ static int s; s+=2; int i=2; return s-i; } int main(){ for(int i = 0; i <= 3; i++) printf("%d, ", func()); return 0; }
- 0, 2, 4,
- 0, 0, 0,
- 0, 0, 0, 0,
- 0, 2, 4, 6,
4. 0, 2, 4, 6,
In welcher Stufe des C-Programmierens wird die folgende Quelltextzeile #include <stdio.h> durch den Inhalt von stdio.h ersetzt?</stdio.h>
- bei der Ausführung
- beim Präprozessing
- beim Editieren
- beim Linken
**
2. beim Präprozessing
Präprozessing:
Makros werden ersetzt und Direktiven wie #include und #define werden verarbeitet**
Wie sieht die Ausgabe des printf-Befehls im folgenden Code aus?
int i=0; for(; i<=5; i++); printf("%d ", i);
- 6
- 0, 1, 2, 3, 4
- 5
- 0, 1, 2, 3, 4, 5
1. 6
Welche Aussagen treffen auf den Code zu:
#include <stdio.h> void swappy(int a, int b){ int tmp = a; a = b; b = tmp; } int main(int argc, char **argv) { int x = 42; int y = 23; swappy(x, y); printf("%d %d\n", x, y); }
- Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘23 42’.
- Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by value’ übergeben. Die Ausgabe auf dem Terminal lautet ‘23 42’.
- Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.
- Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by value’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.
3. Die aktuellen Werte für die formalen Parameter a und b der Funktion swappy werden als ‘call by reference’ übergeben. Die Ausgabe auf dem Terminal lautet ‘42 23’.
Wie lautet die Ausgabe des folgenden Codes?
int a = 10; void func(); int main(void){ int a = 20; printf("a = %d,", a); func(); } void func(){ printf("\ta = %d\n",a); }
- a = 20, a=10
- a = 10, a=10
- a = 20, a=20
- a = 10, a=20
1. a = 20, a=10
Die Ausgabe der folgenden Schleife lautet:
int i = 6; while(i-- >= 0) printf("%d,", i--);
- 5, 3, 1,
- 5, 3, 1, -1,
- 6, 5, 4, 3, 2, 1, 0,
- 6, 4, 2, 0,
**2. 5, 3, 1, -1, **