Blick auf Betreiber associativity: *
und /
sind linksassoziativ, das bedeutet, die Formel in dieser Reihenfolge berechnet: (400*400)/400
400*400=160000
. Computerarithmetik ist endlich. Sie verwenden einen 16-Bit-Compiler, wobei int
in 16 Bits passt und nur Werte aus dem Bereich -32768 ... 32767
(why -32768?) Enthalten kann. 160000 passt offensichtlich nicht in diesen Bereich und wird getrimmt (integer overflow tritt auf). Dann teilen Sie den getrimmten Wert um 400 und erhalten etwas unerwartetes. Compiler der Vergangenheit waren recht einfach, also würde ich erwarten, dass etwas wie 72 in i
gespeichert wird.
Die oben bedeutet, dass Sie entweder einen größeren Integer-Typen verwenden können - long
die in der Lage ist 160000
zu speichern oder assiciativity manuell ändern parenthesses mit: 400*(400/400)
.
Es sollte "int main" für einen Start sein –
Ausdruck 'i' und sehen, ob es Ihren Erwartungen entspricht. –
Was gibt 'sizeof (int)' zurück? – rainer