Wir wissen genausowenig wie der Kompiler, welche Werte FCost zu Laufzeit annehmen kann.
Sollte FCost mal 0 sein, dann kommt hier (Int32(1) shl FCost) - 1;
-1 heraus und das ist außerhalb des zulässigen Bereiches für rounds als UInt32.
"shl 0" and "shr 0" will do nothing, hence if FCost =0
Zitat:
(Int32(1) shl FCost) - 1 = 0