Wednesday, December 06, 2006

Signed 與 Unsigned

今日 De 左個 Bug,
好攪笑。
話說個 Program Loop 死左,
翻查原因,
發現死既地方係呢度:

For (i = 8; i > 0; i--)

用人類語言翻譯,
就係:

i 預設為 8,
當 i 呢個變數大於零時,
做以下既野兼將 i 減去 1。

i 呢個變數,
我 Set 左做 S8,
即係有正負數既 8-bit 長變數。

之後我改成咁:

For (i = 0; i < 8; i++)

結果冇事。
咁就奇喇,
除了這處,
就冇其他地方改動過 i,
點解會唔 Work 呢?
之後我將 i Set 做 S16,
即係有正負數既 16-bit 長變數。
再試多次第一句。

結果係……

冇事……

結論係,
粒 MCU 唔 Support S8,
但 Support S16!!
(但係 S8 呢樣野,係 Offical 都有用……)

No comments: