2005年10月03日

C/C++バグ予防: 安易にゼロを付けないようにしよう!

プログラムを組む上で、ソース中に数値を直書きするケースは多々ある。
(あまりよろしくないことだが・・・。)

その際、安易に「0」を付けた事により、想定外の動作になるケースを紹介する。

たとえば次のようなケースでは、VALUE_010の値が「10」ではなく「8」になってしまう。

sample_ng.cpp
#include <stdio.h>

const int VALUE_001 = 001;
const int VALUE_010 = 010;  //(←先頭の0は不要)
const int VALUE_100 = 100;

void main()
{
  printf("VALUE_001=%3d\n", VALUE_001);
  printf("VALUE_010=%3d\n", VALUE_010);
  printf("VALUE_100=%3d\n", VALUE_100);
}


sample_value0_image.JPG

このケースでは、ついついソースをキレイにそろえようと「10」の前に「0」を付けてしまったことが不具合の原因となる。

これは数値の先頭に「0」を付けることにより、その値は8進数として認識される為である。


・・・そんなわけで安易に「0」を付けないように気をつけたいところだ。


・・・もしよかったら、右上の広告をクリックしてほしいな・・・。
・・・もしくは、人気blogランキング をクリックしてほしいな・・・。
 m(_ _)m
 
posted by かねやん at 00:31| Comment(3) | TrackBack(1) | C/C++言語 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
トラックバック有り難うございます。

ちなみに8進数ネタでいえばC言語では10進数の「0」は書けないんですよね。
Posted by Kei at 2005年10月03日 00:39
初めまして!
「人気UPランキング」管理人の釣吉丸といいます。
ランキングに登録して訪問者を増やしませんか?
全て無料で登録が出来てアクセスアップも期待が出来ます。

詳細はこちら↓↓
http://rental-ranking.com/index.cgi?r=0755

*登録をされましたら、テキストリンクか画像リンクをHPにお貼り下さい。

突然の書き込みお許し下さい。こういう形でしかお誘いできません。
しかし、良質のランキングサイトを目指しておりますので、
良質のサイト様しか、お願いしていません。

皆様からの登録をお待ちしております。
Posted by 釣吉丸 at 2005年10月03日 01:25
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/7617992

この記事へのトラックバック

indian demitting trannies codeposit
Excerpt: Hi
Weblog: sully 02/01
Tracked: 2006-01-03 00:26