RENESAS TOOL NEWS 2005年05月16日 : RSO-M3T-NC30WA_2-050516D
M3T-NC30WA ご使用上のお願い
--制御式のunsigned int型およびunsigned char型の演算について--
|
M16C/60, M16C/30, M16C/20, M16C/10, M16C/TinyおよびR8C/Tinyシリーズ用Cコンパイラパッケージ M3T-NC30WA の使用上の注意事項を連絡します。
- 制御式のunsigned int型およびunsigned char型の演算について
- 該当製品
M3T-NC30WA V.5.00 Release 1 ~ V.5.30 Release 02
- 内容
制御式で、unsigned int型またはunsigned char型の演算結果を0と比較すると、誤ったコードを出力する場合があります。
- 2.1 発生条件
- 以下の条件をすべて満たす場合に発生します。
| (1) | 制御式で、以下のいずれかの組み合わせの演算を行っている。
・ unsigned int型 と unsigned int型
・ unsigned char型 と unsigned char型
・ unsigned int型 と unsigned char型 |
| (2) | (1)の結果を直接、0と比較している。 |
| (3) |
(2)の比較は、> 関係演算子もしくは <= 関係演算子を使用している。 |
- 2.2 発生例
-
------------------------------------------------------------
unsigned int a,b;
if(a-b > 0)
i = 1;
else
i = -1;
------------------------------------------------------------
- 回避策
| (1) | > 関係演算子を使用している場合
!= 関係演算子に置き換えて比較してください。
例
---------------------------------------------------------------
unsigned int a,b;
if( (a - b) != 0)
i = 1;
else
i = -1;
---------------------------------------------------------------
|
| (2) | <= 関係演算子を使用している場合
== 関係演算子に置き換えて比較してください。
例
---------------------------------------------------------------
unsigned int a,b;
if( (a - b) == 0)
i = 1;
else
i = -1;
---------------------------------------------------------------
|
- 恒久対策
本問題は、次期バージョンアップ時に改修する予定です。