Ich nehme mal an, dass du auf einem 32Bit-Windows mit MSVC unterwegs bist.
Da hat ein short int zwei Byte, und ein int vier. scanf mit %d geht von einem int aus, also wird die Adresse, die du mitlieferst, als Zeiger auf einen vier Byte großen Speicherbereich interpretiert, und der eingegebene Wert da rein geschrieben. Von diesen vier beschriebenen Bytes gehören aber nur die ersten beiden zu Wahl, die anderen beiden könnten theoretisch zu einer anderen Variablen gehören.
Der Wert, der ihn Wahl landet, ist der gleiche, weil dein Windows Little-Endian ist.