Funktionenaufruf mit verschieden Datentypen?!



  • Hallo,

    ich bin grade ein bisschen am Herumspielen mit Datentypen und hab mir folgendes Programm geschrieben:

    #include <stdio.h>
    #include <stdlib.h>
    
    int Funktion1(I,C);
    
    int main()
    {
        int a=99;
    
        char c='Z';
    
        printf("FKT1!\n\n");
    
        Funktion1(a,c);
    
    system("PAUSE");
    return 0;
    }
    
    int Funktion1(char I, char C)
    {
        printf("Beide Integer: I = %i und C = %i\n",I,C);
        printf("Int und Char: I = %i und C = %c\n",I,C);
        printf("Ende FKT1\n");
    
        return 0;
    }
    

    wenn ich die Datentypen bei Funktion beide in int umänder klappts, der Compiler meckert nicht...warum beschwert er sich bei beiden char mit einer ganzen Liste an Fehlern? (conflicting types usw.). Wie ist das allgemein eigentlich mit den Datentypen beim Funktionsaufruf? Irgendwie liest man viel drüber, aber ich bin noch nicht so ganz durchgestiegen. Kann ich an eine Funktion eigentlich auch mehrere, verschiedene Datentypen ohne weiteres übergeben? Hängt das mit dem Datentyp des Rückgabewerts irgendwie zusammen?! Könnte sich vielleicht jemand erbarmen und mal ein paar allg. Grundsätze dafür zusammenfassen bzw. mir eine schön verständliche Seite dafür zeigen?! Irgendwie hilft mir meine Literatur momentan nicht wirklich weiter 😞

    Grüße



  • ein char ist ein byte gross. ein int ist 4 byte (meistens, je nach plattform). wenn man einen typ wie ein int oder long oder so einen kleineren typ (z.b. char oder short int) "pressen" will meckert der compiler, weil es zu einem potentiellen informationsverlust kommt.



  • #include <stdio.h>
    #include <stdlib.h>
    
    int Funktion1(I,C);
    

    Das muss einen Fehler ergeben, weil I und C Namen für Typen sein müssten, die vorher definiert wurden. Wie ich die beiden Header kenne, gibt's dort aber keine Typen I und C.

    chmbw schrieb:

    Kann ich an eine Funktion eigentlich auch mehrere, verschiedene Datentypen ohne weiteres übergeben?

    Ja.

    chmbw schrieb:

    Hängt das mit dem Datentyp des Rückgabewerts irgendwie zusammen?!

    Nein.

    cherrie schrieb:

    ein char ist ein byte gross.

    meistens, je nach plattform. Aber du kannst sicher sein, dass ein char nicht grösser ist als ein int. Wegen sowas sollte es aber keine Fehler geben, nur Warnungen.
    🙂


Anmelden zum Antworten