掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23902

小さい型の変数に大きい型の変数を代入しているソースのチェック
投稿者---かず(2005/10/31 22:30:21)


初めまして!かずと申します。よろしくお願いします。

例えば、int型に大きな数(char型に入りきれない数)を代入し、
これをchar型に代入した場合、上位のビットが失われて
結果は意味の無いものになると思います。

ex)以下のbは「-24」となりました
int a;
char b;
a=1000;
b=a;


この様なソースは問題なので、修正しようと思うのですが、
今まで作ったソースには上記のような「小さい型に大きい型
の変数を代入」している処理がたくさんあります。
このため、1行1行見直すのは辛いです。
そこで、VC++やgccで、この様な問題をチェックするコンパイル
オプションが無いかと思い、色々調べて見たのですが、うまく探すことが
出来ませんでした。

どなたか「小さい型に大きい型の変数を代入」している
ソースに警告やエラーを出力してくれるコンパイルオプションを
教えてください。

よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:小さい型の変数に大きい型の変数を代入しているソースのチェック 23903 まきじ 2005/10/31 23:08:20
<子記事> Re:小さい型の変数に大きい型の変数を代入しているソースのチェック 23904 Ban 2005/11/01 00:58:05
<子記事> Re:小さい型の変数に大きい型の変数を代入しているソースのチェック 23913 shu 2005/11/01 11:28:33
<子記事> Re:小さい型の変数に大きい型の変数を代入しているソースのチェック 23951 かず 2005/11/02 23:28:13


No.23903

Re:小さい型の変数に大きい型の変数を代入しているソースのチェック
投稿者---まきじ(2005/10/31 23:08:20)


>そこで、VC++やgccで、この様な問題をチェックするコンパイル

VC だったら warning level を 4 にすれば良いのでは?

warning C4244: '=' : conversion from 'int' to 'char', possible loss of data

と出ます。


この投稿にコメントする

削除パスワード

No.23904

Re:小さい型の変数に大きい型の変数を代入しているソースのチェック
投稿者---Ban(2005/11/01 00:58:05)


VC.NET2003
 →C/C++
  →コード生成
   →小さい型への変換チェック


この投稿にコメントする

削除パスワード

No.23913

Re:小さい型の変数に大きい型の変数を代入しているソースのチェック
投稿者---shu(2005/11/01 11:28:33)


>例えば、int型に大きな数(char型に入りきれない数)を代入し、
>これをchar型に代入した場合、上位のビットが失われて
>結果は意味の無いものになると思います。

そういうおかしなプログラムは、面倒かもしれませんが作り直したほうが良い。


この投稿にコメントする

削除パスワード

No.23951

Re:小さい型の変数に大きい型の変数を代入しているソースのチェック
投稿者---かず(2005/11/02 23:28:13)


まきじさん、Banさん、shuさん有り難うございました。

警告エラーを出して、問題のある箇所は全部修正したいと思います。

#gccについて、自分なりに調べてみたのですが、
#gccはVCのように警告エラーは出せないようですね・・・。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧