In beiden Fällen übergeben Sie das erste Argument als int und das zweite als char. So wird T1 int
und T2 wird char
.
Im ersten Fall speichern Sie das Ergebnis von in einer char -Variable (als T2 ist hier ein char), aber beim Zurückgeben des Ergebnisses wird es ein int. In Ihrem Code fügen Sie nur 1
und 'a'
und ASCII-Wert von 'a' ist 97. So ist das zurückgegebene Ergebnis 98. Sowohl char
und int
gibt die gleiche Antwort hier, weil eine char
kann auch 98 speichern (char ist 1 Byte und seine Reichweite ist -128 bis 127; int ist 4 Bytes).
In Ihrem zweiten Programm speichern Sie die Summe in einer int-Variablen (wie T1 ist int
), die die Summe von 1+'a'
, die 98 (int-Wert) ist, auf jeden Fall speichern kann.
So erhalten Sie das gleiche Ergebnis in beiden Fällen.
Wenn Sie einige große int
Wert anstelle von 1
hinzugefügt hatten, würde das zurückgegebene Ergebnis von beiden Programmen abweichen. Wenn Sie beispielsweise 1200 and 'a'
an die Funktion summit() übergeben, gibt das erste Programm 17
aufgrund eines Überlaufs des Bereichs char
zurück, aber das zweite Programm gibt 1297
zurück (kein Überlauf bei int).
Bitte nehmen Sie sich die Zeit, um Ihre Beispiele zu bereinigen. Die Darstellung von unordentlichem oder seltsam formatiertem Code (einschließlich übermäßigem Leerraum oder Einrückung) wird viele Benutzer abweisen. –