1) müsste das nicht heissen:
foo ( (int16_t)( (int32_t)(x << 15) / (int32_t)y ) )
2)
ich glaub, das Ergebnis ist "unpredictable". Da es ja keine DIV instruction für den µC gibt, ist der Compiler zuständig, die Division zu generieren UND so einen Check zu machen.
Am besten den AVR mal in sowas hineinhetzen und mal gucken, ob es wo zu rauchen beginnt *g*
Lesezeichen