c言語、sprintf について

RX631CPUを使ってソフト開発しています.環境はCS+で、コンパイラはCC-RXで、V-2.08およびおV-3.04に切り替えて確認しています.

sprintfの書式で、納得できないコードが生成されています.下記のコメント欄は生成された文字列です.(メモリ情報を確認)

int iTest = 0x01AB; // = 427, &xSys.Buf = 0x00002680

sprintf((char *)&xSys.Buf[0x10], "<%X>", iTest); // 0x2690 "<1AB>\0"
sprintf((char *)&xSys.Buf[0x18], "<%4X>", iTest); // 0x2698 "<%4X>\0"
sprintf((char *)&xSys.Buf[0x20], "<%04X>", iTest); // 0x26a0 "<%4X>\0"
sprintf((char *)&xSys.Buf[0x28], "<%*X>", 4, iTest); // 0x26a8 "< 1AB>\0"
sprintf((char *)&xSys.Buf[0x30], "<%0*X>", 4, iTest); // 0x26b0 "<01AB>\0"
sprintf((char *)&xSys.Buf[0x38], "(%d)", iTest); // 0x26b8 "(427)\0"
sprintf((char *)&xSys.Buf[0x40], "(%4d)", iTest); // 0x26c0 "(%4d)\0"
sprintf((char *)&xSys.Buf[0x48], "(%04d)", iTest); // 0x26c8 "(%4d)\0"
sprintf((char *)&xSys.Buf[0x50], "(%*d)", 4, iTest); // 0x26d0 "( 427)\0"
sprintf((char *)&xSys.Buf[0x58], "(%0*d)", 4, iTest); // 0x26d8 "(0427)\0"
sprintf((char *)&xSys.Buf[0x60], "(%+4d)", iTest); // 0x26e0 "(%4d)\0"
sprintf((char *)&xSys.Buf[0x68], "(%+04d)", iTest); // 0x26e8 "(%4d)\0"
sprintf((char *)&xSys.Buf[0x70], "(%+*d)", 4, iTest); // 0x26f0 "(+427)\0"
sprintf((char *)&xSys.Buf[0x78], "(%+0*d)", 4, iTest); // 0x26f8 "(+427)\0"


CS+ V7.00.00 [13 Jun 2018] [メモリ情報]
2022年7月14日 10:32:17
デバッグ・ツール : RX E1(Serial)
プロジェクト名 : AX162V30
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +a +b +c +d +e +f ASCII
00002690 | 3C 31 41 42 3E 00 00 00 3C 25 34 58 3E 00 00 00 | <1AB>...<%4X>...
000026a0 | 3C 25 34 58 3E 00 00 00 3C 20 31 41 42 3E 00 00 | <%4X>...< 1AB>..
000026b0 | 3C 30 31 41 42 3E 00 00 28 34 32 37 29 00 00 00 | <01AB>..(427)...
000026c0 | 28 25 34 *** 29 00 00 00 28 25 34 *** 29 00 00 00 | (%4d)...(%4d)...
000026d0 | 28 20 34 32 37 29 00 00 28 30 34 32 37 29 00 00 | ( 427)..(0427)..
000026e0 | 28 25 34 *** 29 00 00 00 28 25 34 *** 29 00 00 00 | (%4d)...(%4d)...
000026f0 | 28 2B 34 32 37 29 00 00 28 2B 34 32 37 29 00 00 | (+427)..(+427)..
00002700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

上記の様に、書式にフィールド幅指定を入れると、正常に文字列が生成されないのですが、どうしてなのでしょうか?

’*’により、フィールド幅指定を変数で与えると正常に出力します.