tjaja... ist nicht so schön, aber zu erklären:
Wenn der Compiler die erste Konstante (200) findet, reserviert er dafür Platz im Speicher, allerdings nur für eine Integervariable (reicht ja erstmal). Das Ergebnis der Operation will er dann aber auch in diesem Speicherplatz ablegen (und erst später dd zuweisen...), was natürlich nicht mehr funktioniert (40.000 > 32.767).
Wenn Du gleich Double-Konstanten verwendest (200#), läufts wieder...
Gruss
Joringel