Problem mit der Ausgabe



  • arghhhh ! 😃 du kannst gerne vorbeikommen und mir eine reinhauen 😃

    Aber seltsam, mir ist der Fehler noch nie passiert^^ Jetzt wird auch alles klar, durch das ; wird ja der Anweisungsblock nicht ausgeführt.

    Ich schiebe alles auf den Compiler, der hätte mich warnen müssen ^^

    Aber weißt du vll noch, wieso das initialisieren des Arrays mit {0} ein Fehler sein soll ?

    Gruss theflasher



  • theflasher schrieb:

    Aber weißt du vll noch, wieso das initialisieren des Arrays mit {0} ein Fehler sein soll ?

    das ist kein fehler. wenn du alles auf 0 setzen willst, dann geht das so.
    🙂



  • 😃 Anscheinend hatte ich hier eine Fehlinformation, muss das nochmal nachlesen.



  • Na, also da wollte mir doch tatsächlicher einer was einreden 😃

    Ok Problem gelöst, vielen Dank^^ Frohe Weihnachten :xmas1:



  • Hallo theflasher 😞

    habe mal schnell nachgelesen, demzufolge wird nur das erste Element initialisiert, sprich array[0][0]. Der Rest sind Zufallswerte. Vielleicht kann das jemand verifizieren 😕

    D A N K E 👍



  • Hi, also hier habe ich nochmal einen Code, wo man das genau sieht

    #include <stdio.h>
    #include <stdlib.h>
    
    void ubergabe(int array[10][10]);
    
    int main()
    {
    
       int array[10][10] = {0};
       int i;
       int j;
    
       ubergabe(array);
    
       for(i=0;i<10;i++)                    // Zwei for-SChleifen, eine für den 1er Bereich, die zweite für den 10er Bereich
       {
    
           for(j=0;j<10;j++)
           {                         
               printf("%d",array[i][j]);            
               } 
           printf("\n");     
       }
       getchar();
       return 0;
    }
    
    void ubergabe(int array[10][10])
    {
         array[2][3] = 43;                // Die 3te Zeile ist 2 und das 4te Element ist 3, weil 0 beachtet wird.
         array[0][0] = 12;
    }
    

    Sieht so aus, als würden alle Zahlen mit 0 initialsiert werden

    Gruss theflasher



  • Ich glaube, dass ist compilerabhängig aber nicht ANSI C 😕



  • Du scheinst recht zu haben, habe in einem Buch gelesen, die Elemente, die nicht explizit einen Wert zugewiesen bekommen sollen, werden 0.

    Sprich das Element [0][0] wird auf jeden Fall 0, die anderen implizit.

    Mal was anderes:
    An welche Programmierrichtlinien hälst du dich?

    Sieht sehr sauber aus!

    Zeh Mau



  • Zeh Mau schrieb:

    habe mal schnell nachgelesen, demzufolge wird nur das erste Element initialisiert, sprich array[0][0]. Der Rest sind Zufallswerte. Vielleicht kann das jemand verifizieren

    nö, aber falsifizieren 😉

    ISO/IEC 9899:1999 - §6.7.8 absatz 21 schrieb:

    If there are fewer initializers in a brace-enclosed list than there are elements or members of an aggregate ...the remainder of the aggregate shall be
    initialized implicitly the same as objects that have static storage duration.

    ...und statische objekte werden mit 0 initialisiert.
    🙂



  • Also wenn "shall be" heißt, es muss zwingend so gemacht werden, dann sind die Werte tatsächlich 0, genau, wie bei static :xmas1:

    Danke, das war ein toller Lerneffekt und wissenschaftlich recherchiert!



  • Zeh Mau schrieb:

    Also wenn "shall be" heißt, es muss zwingend so gemacht werden..

    naja, 'shall' ist eigentlich kein 'must', aber schon ziemlich fordernd. ich nehme an, sie verwenden 'shall', damit der text freundlicher klingt.
    🙂


Anmelden zum Antworten