Red de conocimientos sobre prescripción popular - Conocimiento de perdida de peso - En TC20, el resultado de salida de int i=65536; printf("%d\n",i);

En TC20, el resultado de salida de int i=65536; printf("%d\n",i);

lz quiere experimentar

short

i=65536;printf("%d\n,i); right

Sí Si es así, el resultado de salida es 0

Miré el resultado del desmontaje y puedo explicarte por qué es 0

65536 corresponde al número hexadecimal 10000h,

short

El resultado del ensamblaje de i=65536 es

mov

[i],10000h

i solo ocupa Los 16 bits corresponden a los 16 bits inferiores de 10000h. El bit 1 más alto se descarta automáticamente porque no se puede almacenar, por lo que el valor de i es 0. No sé si otros compiladores lo manejan así. De alguna manera, supongo que debería ser casi lo mismo.

Olvidé mencionar que mi IDE es vs2010

.