char mit int addieren

Phoenix01

Grünschnabel
Hallo,
hab da mal eine Frage zu char und int Werten, Variablen wenn man diese addiert. (Hoffe die Frage wurde nicht schon zu oft gestellte, aber die Forumsuche hat nix passendes gefunden :D )

Wenn ich folgendes eingebe:
Code:
    char a = 'x';
    
    char b = 'x' + 1;
    
    // char c = a + 1;

hat b ein y als Inhalt, was ja auch ok ist (ASCII Tabelle), nur warum gibt es einen Compile Fehler, wenn ich das auskommentierte dazu nehme? Warum kann 'x' mit 1 addiert werde, aber eine Variable mit 'x' als Inhalt nicht?

Danke schonmal ;)

Phoenix01
 
Hallo!

Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

/**
 * @author Tom
 *
 */
public class CharAdditionExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        //char Werte sind immer Positiv und im Bereich von 0 bis 65535 (Character.MAX_VALUE)
        char a = Character.MAX_VALUE; //a enthält maximalen char Wert
        //passt noch in Wertebreich von char.
        //char b = Character.MAX_VALUE + 1; //passt nicht mehr in Wertebreich von char -> Compiletime error
        char b = 'A';
        //der Compiler nimmt nun an, dass in b potentiell ein Wert von der Größe von Character.MAX_VALUE
        //enthalten ist und bringt dann den entsprechenden Compile error der dann besagt, dass der Wertebereich
        //überschritten werden könnte. Der Compiler macht an dieser Stelle keine Datenflussanalyse.
        //char c = b + 1;
        
        //das ist also so als würde man versuchen folgendes zu machen:
        //char c = Character.MAX_VALUE  +1;
        //Deshalb gibts den "Fehler"
    }
}

Gruß Tom
 
Hallo,

Danke für die Antwort!

Klar, nun ist es auch logisch... wenn man einmal weiss das der Compiler den genauen Wert der Variablen nicht prüft.

Nun ist auch logisch warum

Code:
char b = 'A' + 6553;

noch ok ist, aber

Code:
char b = 'A' + 65535;

nicht mehr, liegt dann an dem max Wert.

Vielen Dank nochmal!
Phoenix01
 
Zurück