-> Hier kostenlos registrieren
Hallo,
hätte mal eine Frage zur impliziten (KLasse A) bzw. expliziten Konvertierung (Klasse B) bei SCL. Mir ist nicht klar, was der eigentliche Unterschied ist. Ich dachte bisher, implizite Konvertierungen können entfallen, weil der Kompiler sie implizit ausführt.
Beispiel 1: Folgende Anweisungen rechnen richtig. Das habe ich in PLCSim getestet:
Beispiel 2: Folgende Anweisungen rechnen z.B. bei negativen Zahlen falsch:
Ich dachte, die Typ A-Konvertierungen können entfallen. "INT_TO_DINT" gehört zu den Klasse A Konvertierungen.
Irgendwas habe ich da wohl nicht verstanden.
Was heißt dann also Klasse A bzw. Klasse B?
Gruß
Earny
hätte mal eine Frage zur impliziten (KLasse A) bzw. expliziten Konvertierung (Klasse B) bei SCL. Mir ist nicht klar, was der eigentliche Unterschied ist. Ich dachte bisher, implizite Konvertierungen können entfallen, weil der Kompiler sie implizit ausführt.
Beispiel 1: Folgende Anweisungen rechnen richtig. Das habe ich in PLCSim getestet:
Code:
FUNCTION FC1: VOID
//MW_16 wurde als INT deklariert
//MW_18 wurde als INT deklariert
//MD_20 wurde als DINT deklariert
MD_20:=INT_TO_DINT(MW_16) + INT_TO_DINT(MW_18);
END_FUNCTION
Beispiel 2: Folgende Anweisungen rechnen z.B. bei negativen Zahlen falsch:
Code:
FUNCTION FC1: VOID
//MW_16 wurde als INT deklariert
//MW_18 wurde als INT deklariert
//MD_20 wurde als DINT deklariert
MD_20:=MW_16 + MW_18;
END_FUNCTION
Ich dachte, die Typ A-Konvertierungen können entfallen. "INT_TO_DINT" gehört zu den Klasse A Konvertierungen.
Irgendwas habe ich da wohl nicht verstanden.
Was heißt dann also Klasse A bzw. Klasse B?
Gruß
Earny