Forum: PC-Programmierung C#: Int16 vs. Int32


von Zebra (Gast)


Lesenswert?

Die Addition ergibt beim Kompilieren die Fehlermelung:

Der Typ 'int' kann nicht implizit in 'short' konvertiert werden. Es ist 
bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt 
eine Umwandlung.)

Warum? Muss alles in Int32 (dann funktioniert es) berechnet werden?

1
    Int16 i, t;
1
    t = i + 6;

von Mark B. (markbrandis)


Lesenswert?

Wenn Du den Text der Fehlermeldung in Google eingibst, dann erhältst Du 
diverse Treffer die erklären warum das so ist. Zum Beispiel:

http://www.computerbase.de/forum/showthread.php?t=676712

Übrigens ist es eine gute Idee zu erwähnen, um welche Programmiersprache 
und um welchen Compiler es geht.

von Peter II (Gast)


Lesenswert?

Mark B. schrieb:
> Übrigens ist es eine gute Idee zu erwähnen, um welche Programmiersprache
> und um welchen Compiler es geht.

Wie viele C# Sprachen kennst du, damit du dafür eine Unterscheidung 
brauchst?

von Mark B. (markbrandis)


Lesenswert?

P.S.:
Ohne mich jetzt mit C# auszukennen, nehme ich mal an dass der Compiler 
das Literal 6 als Int32-Wert ansieht.

von Mark B. (markbrandis)


Lesenswert?

Peter II schrieb:
> Mark B. schrieb:
>> Übrigens ist es eine gute Idee zu erwähnen, um welche Programmiersprache
>> und um welchen Compiler es geht.
>
> Wie viele C# Sprachen kennst du, damit du dafür eine Unterscheidung
> brauchst?

Aie. Habe ich glatt das C# im Thread-Titel übersehen. Mea culpa.

Was ist das für ne komische Sprache, wo der Compiler deutsche Meldungen 
ausgibt? ;-)

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Mark B. schrieb:
> Was ist das für ne komische Sprache, wo der Compiler deutsche Meldungen
> ausgibt? ;-)

macht das nicht sogar der GCC?

von Mark B. (markbrandis)


Lesenswert?

Peter II schrieb:
> macht das nicht sogar der GCC?

Bei mir noch nie. Weder unter Linux noch mit MinGW unter Windows.

Vielleicht wenn man es explizit so einstellt. Aber warum sollte man das 
wollen? Das machtt es nur schwerer, im Internet nach Beispielen zu 
suchen wo jemand das gleiche Problem hatte wie man selbst.

von Peter II (Gast)


Lesenswert?

Mark B. schrieb:
> Vielleicht wenn man es explizit so einstellt. Aber warum sollte man das
> wollen?

ich will es auch nicht. Aber unter Linux habe ich schon öfters erlebt 
das sie sich viel Arbeit gemacht haben, alles zu übersetzen.

von Stef (Gast)


Lesenswert?

Schreib mal

Int16 i
Int16 t

;-)

von Peter II (Gast)


Lesenswert?

Stef schrieb:
> Schreib mal
>
> Int16 i
> Int16 t
>
> ;-)

und was soll das bringen? Das Problem ist das 6 ein int ist. Und 
Short+Int = int;

von Mark B. (markbrandis)


Lesenswert?

Peter II schrieb:
> Das Problem ist das 6 ein int ist. Und Short+Int = int;

Dann also:

1
Int16 i, t;
2
3
t = i + (Int16)6;

von guest (Gast)


Lesenswert?

Mark B. schrieb:
> Dann also:

Fast
1
Int16 i, t;
2
3
t = (Int16)(i + 6);

von Arc N. (arc)


Lesenswert?

Mark B. schrieb:
> Peter II schrieb:
>> macht das nicht sogar der GCC?
>
> Bei mir noch nie. Weder unter Linux noch mit MinGW unter Windows.
>
> Vielleicht wenn man es explizit so einstellt. Aber warum sollte man das
> wollen? Das machtt es nur schwerer, im Internet nach Beispielen zu
> suchen wo jemand das gleiche Problem hatte wie man selbst.

OT: Das wird beim Bauen übergeben bzw. muss configure --disable-nls 
explizit übergeben werden. "The --enable-nls option enables Native 
Language Support (NLS), which lets GCC output diagnostics in languages 
other than American English. Native Language Support is enabled by 
default if not doing a canadian cross build."

Etwas weniger OT:
Go hat das eleganter gelöst: Typisierte und untypisierte 
Konstanten/Literale
https://blog.golang.org/constants

von Rolf M. (rmagnus)


Lesenswert?

Arc N. schrieb:
>> Vielleicht wenn man es explizit so einstellt. Aber warum sollte man das
>> wollen? Das machtt es nur schwerer, im Internet nach Beispielen zu
>> suchen wo jemand das gleiche Problem hatte wie man selbst.
>
> OT: Das wird beim Bauen übergeben bzw. muss configure --disable-nls
> explizit übergeben werden.

Wenn man denn partout will, dass der Compiler es nicht mal kann. In der 
Regel reicht es aber aus, die Sprache auf Englisch zu stellen, wenn man 
keine übersetzten Texte will.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.