• ベストアンサー

変数(関数)名の頭に_

参考書のサンプルプログラムを見ると、よく、変数(関数)名の頭に_(アンダーバー)が付いているのがあります(_hensuu, _Function とか)。プログラムの書き方は人それぞれだと思いますが、よく見かけるのでなんとなく気になりました。どんなとき_(アンダーバー)を付けようと思いますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

No.1 の方の使い方は、逆ですね。 Cの規格(ANSI)では、アンダースコア "_" で始まる単語は予約語だと 考えなさい、となってます。 たまたま、今、使っているコンパイラでは _hensuu が予約語になっていなくても、 それは *たまたま* でしかなく、将来、コンパイル or リンクエラーになっても、 文句を言えません。 でも、良く使われてますよね。参考書のサンプルに使われているのなら、その 参考書に書いてあることは、話半分で読んだ方が良いと思います。他にも、そういう レベルの間違いがたくさんあるだろうから。

kinokos
質問者

お礼

ありがとうございます。参考書が間違ってることもあるんですね。

その他の回答 (2)

  • hero1000
  • ベストアンサー率29% (114/390)
回答No.3

a-kumaさんのおっしゃるとおりですね。 ちなみに昔、一部のOSのシステムコール関数なんかは名前の頭にアンダーバー がついていました。 参考書ってよく間違いを堂々と説明しているものなのでとりあえず流して全体 を把握する程度にしておき、後からANSIの本を読むなりした方がいいと思います よ。

kinokos
質問者

お礼

ありがとうございます。ANSIの本を読んでみます。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

変数名を「当たり前」の名前にしたとき、予約語に当たるかな?という場合。 あと、変数の一覧を作成したとき、上位に出て欲しい場合、でしょうか。 でも、最近はハンガリアン記法でやってますね。

kinokos
質問者

お礼

ありがとうございました。

関連するQ&A

  • ・関数内で宣言された変数の扱い(C入門本の説明で)

     以下C言語入門書の説明ですが!  いまいちわかりません?   ・関数内で宣言された変数の扱い 関数内で宣言した関数は、その関数内でのみ有効な変数になります。関数が異なれば、同じ変 数名で宣言することができます。例えば、main関数と(?)kansuu関数で、同じ(?)hennsuuという名 前の変数を宣言することができます。  int main() { int (A)hensuu = 0; (B)kansuuu(1); } int (C)kansuu(int hikusuu) { int (D)hensuu = 10; }  列のmain関数で宣言されている(?)hensuuと、さ(?)kansuu関数で宣言されている(?)hensuuは 同じ名前ですが、独立した異なるものです。(?)kansuu関数が実行されているときに、(?)hensuuの値 を変更しても、main関数で宣言されている(?)hensuuの値は変更されません。 また、(?)kansuu関数を実行している間だけ、(?)kansuu関数で宣言されている(?)hensuuが有効です。 (?)kansuu関数から呼び出し元でるmain関数に戻った際は、(?) kansuu関数で宣言した (?)hensuuはもう有効ではなくな、値を参照することもなくなります。     以上の説目で、   (A)hensuu、 (B)kansuuu、(C)kansuu、(D)hensuu  (アルファベット)を分かりやすいよう追加しました。   説明の   (?)にプログラムの(A)~(D)をつけたらどうなるか知りたいです。 (何となくわかるですが?)   よろしくお願いします。

  • 変数名の付け方

    変数名の前にアンダーバー「_」をつけて「_hensu」などどしている変数名がありますが、このアンダーバーはどんな意味があるのでしょうか。 昔からある何かの習慣なのでしょうか。

    • ベストアンサー
    • Java
  • 変数の使用方法について(文字列)

    テキストボックスなどの項目名で 例えば tanka1...tanka2...tanka3.. など連続したものをひとつのFunctionの関数で計算させたいときに、 VBAのように  hensuu = 1 ans = tanka" & hensuu & "  のように 特定の変数に数値を持たせることは可能なのでしょうか? 可能であればその記述方法などを教えていただけませんでしょうか? 1ページの容量がとても大きくなってしまって困っています。 よろしくお願いします。

  • ファイル名、関数名、変数名・・・様々な決定について

    自分でも具体的に言いたいことが表せないかもしれませんが よろしくお願いします。 なかなかこれで決まりというスタイルが確立しないのですが、 何かに頼りたい自分としては、そういうことを幅広く扱っている 本などがあれば参考にしたいです。 結局最後は自分で決定するしかないということは、頭では分かっているつもりですが・・・ 悩んでいることの例としてはたくさんあって、 ・エラーを表示する関数名として disp_errorなのかdisply_errorなのかshow_errorなのか それともアンダーバー無くしてshowerrorなのか ・最大アイテム数を表す定数名として ITEM_MAXなのかMAX_ITEMなのかITEM_NUMなのか ・データを格納するテーブル名を表す変数名として tablenameなのかtableだけでいいのか ・~の~の~のアイテムという変数名の場合 など、これだけならそれらを聞けば解決するのですが、まだまだあります・・・ 周りからみれば些細(どうでもいい)なことだと思うので 本とかをあまり見かけないのですが、 こういうことに言及しているサイトなり本などはご存知でしょうか?

  • 変数名を作る時

    変数名を作る時は strFolderとか intNoとか 変数の型を先頭につけてますが、 subプロシージャーやFunctionプロシージャーにも同じような事をしたいのですが どのような頭文字がいいでしょうか? 例えばMakeFolderというFunctionプロシージャーを作る時に、 Function FunctionMakeFolder() にしたら長いし Function FunMakeFolder() って見たことないのですが、皆さんどのように名前をつけてますか?

  • 変数名や関数名の命名方法

    どうも初めて質問させていただきます。 私はプログラマの2年生で、現在C++で作業しています。 最近になってようやくプログラミングに自信を持てるようになり、 だいぶコーディングも早くなった気がしています。 ですが、いつも変数名や関数名またはクラス名といった名前を付ける際に 非常に時間がかかってしまいます。 和英辞典を使って調べたりするのですが、 そのまま名付けても、他の人が見て意味が理解できなさそうなことが多いです。 みなさんは変数名など考えるときに、どのようにしていますか? 何かプログラミング専門の和英辞典みたいな書籍など出ているのでしょうか? お役立ち情報ありましたら、どうぞよろしくお願いします。

  • 同じ名前の変数…

    数日前からPHPをはじめた者です。 クラス変数(という呼び方が適切かは??)と、その変数に値をセット/ゲットする関数を内包するクラスを作ってみたのですが、それに関してどうもピンと来ない部分があるので質問させてください。 以下がソースです。 class sample{ var $hensu; function set_hensu($str){ $hensu = $str; } function get_hensu(){ return $hensu; } } 上記クラスを使って値のセット/ゲットをしようとしたのですが、結果は×でした。 ファンクション内の変数を、thisで指定するとうまく行きました。 最初に指定した変数と、ファンクション内の変数を同一のものだと認識させるには、ファンクション内でのthis指定の他に方法は無いのでしょうか? もしくは、ファンクション内で書いた変数が新しい変数だと認識させない方法とか…。 無いなら諦めます。よろしくお願いします。 また、直接質問とは関係ないのですが、 どうしてPHPは変数名を書いただけで変数が作られてしまうのでしょう。メリットは何ですか? 分かりづらくて戸惑ってます。

    • ベストアンサー
    • PHP
  • 関数の引数とグローバル変数について

    javascript初心者です。 どうしても分からないことがあるので質問させて頂きます。 グローバル変数の値を関数で処理して増やしコンソールログに表示していく、 というようなソースがあるとします。(以下) //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 var afunc = function(){   a++;   console.log(a); } var bfunc = function(){   b++;   console.log(b); } var cfunc = function(){   c++;   console.log(c); //onclickなどで呼び出す関数 function test1(){   var aplus = new afunc(); } function test2(){   var aplus = new bfunc(); } function test3(){   var aplus = new cfunc(); } グローバル変数や関数などが3つと数が少ないならこれでもいいかも知れませんが、 これが数十個とかに増えると、ソースの量もかなり多くなり 管理も大変になると思い簡略化させたいと考えました。 そこで以下のように変えてみたのですが、 加算がうまくいきません。 //グローバル変数 var a = 0; var b = 0; var c = 0; //計算する関数 vvar xxfunc = function(xx){   this.xx = xx;   this.show = function() {     this.xx++;     console.log(this.xx);   } } //onclickなどで呼び出す関数 function test1(){   var aplus = new xxfunc(a);   aplus.show(); } function test2(){   var aplus = new xxfunc(b);   aplus.show(); } function test3(){   var aplus = new xxfunc(c);   aplus.show(); } もしかすると、関数の引数にはグローバル変数を指定することができないのでしょうか? 何かうまいやり方はあるでしょうか? プログラミング自体が勉強し始めたばかりなので、 おかしなソースの書き方をしているかもしれませんのが、 ご教授、よろしくお願いいたします。

  • jQueryの関数から変数を取得

    次のうち変数valを取得してこれとは別の関数で利用したいのですが、どうやればこの変数を取得出来るのでしょうか? 単純な関数だと関数名を付けて戻り値にvalを指定してそれを呼び出してあげれば良いと思うのですが、この場合はどうしたら良いのか分からず頭を悩ませています。 var timer = false; var replaceWidth = 320; var prefWidth = parseInt( $( window ).width() ); $( window ).resize( function () { if( timer !== false ) { clearTimeout( timer ); } timer = setTimeout( function () { var self = $( this ); var windowWidth = parseInt( $( window ).width() ); if( windowWidth <= replaceWidth && replaceWidth < prefWidth ) { var val = 1; } else if( replaceWidth < windowWidth && prefWidth <= replaceWidth ) { var val = 10; } prefWidth = windowWidth; }, 200 ); });

  • PHP 関数内の変数のスコープについて

    宜しくお願いします。 関数A内で作成したローカル変数 「a」 を、 その関数A内で作った関数Bで、変数「a」を操作しようと思います。 簡単に書くとこうです。 function A(){ $a = array(あ、い、う); function B(){ $a = array(い、う) }   ※$aを使っての処理 } <試してみたこと> 関数B内で、global $a として、変数をグローバルにしましたが、関数Bの操作は反映されませんでした。 retun で戻せばよいとも、もちろん考えましたが、 処理の都合上、どうしてもグローバルに扱いたく思います。 とても、大雑把な質問形式で申しわけございませんが、何卒、ヒントを下さいませ。

    • ベストアンサー
    • PHP