Aktueller Inhalt von Tron

  1. T

    Kurze Verständnisfrage (Adresse int array in C)

    Nein, eine Adresse ist eine Adresse und kein Integer, egal ob signed oder unsigned. Das ist alles undefiniertes Verhalten: "%lu" erwartet einen unsigned long, aber a hat bei Verwendung (wie Yamagi erklärt hat) den Typ int* und &a den Typ int(*)[3], also beides nicht unsigned long. "%p" hingegen...
  2. T

    Test, ob ein bestimmtes Jahr ein Schaltjahr ist oder nicht

    $ YEAR=2019 $ echo $((YEAR % 4 != 0 || (YEAR % 100 == 0 && YEAR % 400 != 0))) 1
  3. T

    Preprocessor C

    Welche passende Syntax? Du hast doch schon alles. #if defined(_WIN32) # include <windows.h> # include <malloc.h> # include <conio.h> # define CLEAR system("cls") # define BUF 256 void err(int eval, char const* fmt, ...) { // Implementierung der Funktion } #elif Der da wäre?
  4. T

    Preprocessor C

    Irgendie verstehe ich dein Problem nicht so ganz. Du hast eine eigene err() gestrickt und die brauchst du nur in der einen .c-Datei. Was hindert dich daran, die in den Abschnitt #if defined (_WIN64) || (_WIN32) zu packen? Nebenbei: Es ist hübscher, wenn _WIN32 ebenfalls per defined geprüft...
  5. T

    undefined behavior?

    Es ist zwar unspecified behavior, in welcher Reihenfolge Funktionsargumente ausgewertet werden. (C11 §6.5.2.2) Aber hier liegt auch undefined behavior vor: Die beiden (Teil-)Ausdrücke "i" und "i += 2" sind unsequenced (C11 §5.1.2.3p3) zueinander, was aus obigem unspecified behavior folgt. "i +=...
  6. T

    Kleines unlogisches Problem mit C (OpenBSD + clang)

    static int const v = 0; int main(void) { *(int*)&v = 1; /* FALSCH: Verhalten ist undefiniert! */ return v; } Nur ein kleines Gegenbeispiel, dass gcc es "richtig" machen würde: Hier liefert gcc 7.3.0 (wahrscheinlich auch andere Versionen) 0 als Rückgabewert von main(). Es wäre auch...
  7. T

    Kleines unlogisches Problem mit C (OpenBSD + clang)

    Das hat nichts speziell mit clang zu tun. Dein Programm hat laut der C-Norm ab der ersten Ausführung von ptr[i] = '\0'; keine Bedeutung mehr -- undefined behavior, wie du korrekt festgestellt hast. Es ist somit falsch, irgendein bestimmtes Verhalten zu erwarten.
  8. T

    cat-like tool with fread() and write() in C

    Das klingt viel schlimmer als es alles ist. Effektiv kann man sich int arr[a * b + c]; ... sizeof(arr) ... so vorstellen: size_t const N = a * b + c; int arr[N]; ... (sizeof(*arr) * N) ... /* Elementgröße * Anzahl */ Das muss auch so funktionieren, denn z.B. ein Ändern von 'a' darf keinen...
  9. T

    Verstaendnissfrage zu db(3).

    Die Beschreibung in db(3) ist tatsächlich sehr dürftig. Ich vermute aber stark, dass nach einem db->del das entsprechende DBT nicht mehr gültig ist. Ich wäre mir nicht einmal sicher, ob nach zwei db->get hintereinander das DBT vom ersten Aufruf noch gültig ist -- es könnte ja sein, dass immer...
  10. T

    mit mkisofs mehrere Ordner zu einem ISO Image hinzufügen

    'x' statt 't', wie immer bei tar. 'tar', nicht 'rar'. tar gehört zum Basissystem.
  11. T

    mit mkisofs mehrere Ordner zu einem ISO Image hinzufügen

    (BSD-)tar kann das auch: tar tf image.iso
  12. T

    GCC 4.9 mit GDC kompilieren

    iconv() erwartet als zweiten Parameter einen 'char**', aber das Argument '&inbuf' beim Aufruf hat den Typ 'char const**'. Das ist ein historisches Problem, das autobreak versucht zu lösen, aber wie so häufig es nur schlimmer macht. Eigentlich(TM) hätte es erkennen sollen, dass dein iconv()...
  13. T

    [C] Hat x=x einen Seiteneffekt?

    Du kannst gerne nicht einverstanden sein. Nur gibt mit die C-Norm recht. Ich zitiere einen Satz aus der Beschreibung des Zuweisungsoperators: (Hervorhebung von mir) Aber schon die Definition von "side effect" bestätigt das schon: (Hervorhebung von mir)
  14. T

    [C] Hat x=x einen Seiteneffekt?

    Zunächst einmal ist das deutsche Wort für "side effect" "Nebenwirkung". Damit ist auch klarer, worum es hier geht: Manche Operatoren haben nicht nur ein Ergebnis, sondern haben auch noch eine Nebenwirkung. Das Ergebnis des =-Operators ist der neue Wert der linken Seite (so wie das Ergebnis von +...
  15. T

    Größe einer Information

    Mein Beispiel unterscheidet sich nicht fundamental vom Temperaturbeispiel. Ich habe nur Grundmenge und Verteilung präzise angegeben und rundere Zahlen gewählt (so dass keine krummen Bits rauskommen). Die Aussage "es hat 29 Grad" enthält mehr Information als "es hat mindestens 25 Grad", da...
Zurück
Oben