【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
ちょっと気になったので質問します。
NULLと0が同じ意味だと考えている人はどれぐらいいますか?
皆さんご自身のことや周りの人の状況など、何でもよいので情報をください。
NULLと0が同じ意味だと考えている人はどれぐらいいますか?
皆さんご自身のことや周りの人の状況など、何でもよいので情報をください。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
#define NULL 0
ってなってるということを聞いたことがあるので
同じ意味だと思ってましたが・・・
環境などは覚えていないです
ってなってるということを聞いたことがあるので
同じ意味だと思ってましたが・・・
環境などは覚えていないです
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> dicさん
> #define NULL 0
> ってなってるということを聞いたことがあるので
> 同じ意味だと思ってましたが・・・
なるほど、情報ありがとうございます。
> #define NULL 0
> ってなってるということを聞いたことがあるので
> 同じ意味だと思ってましたが・・・
なるほど、情報ありがとうございます。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
うちの学校はC言語習わないので、nullと0が同じ意味だと考えてる人はいないと思います。
javaしか習ってないと、nullはnullですからね。
僕はC言語を使って何か作ったことはないので、NULLと0の違いを考えることもないですね。
結構僕みたいに質問の意図も把握できない人は多いんじゃないかなって勝手に予測してます。
>雑談
もうすぐたかぎさんの本発売日ですね。
執筆お疲れさまでした!
アマゾンの紹介文見ると、僕でも読めそうな内容に感じるので、購入予定です^^
本屋で中身確かめてからにすると思いますが、内容楽しみにしてますね。
あ、僕は正誤表は間違いがなくてもWebにあってほしいです。
僕は読む前と、読んでておかしいなと感じたら正誤表を見に行くので・・・・
javaしか習ってないと、nullはnullですからね。
僕はC言語を使って何か作ったことはないので、NULLと0の違いを考えることもないですね。
結構僕みたいに質問の意図も把握できない人は多いんじゃないかなって勝手に予測してます。
>雑談
もうすぐたかぎさんの本発売日ですね。
執筆お疲れさまでした!
アマゾンの紹介文見ると、僕でも読めそうな内容に感じるので、購入予定です^^
本屋で中身確かめてからにすると思いますが、内容楽しみにしてますね。
あ、僕は正誤表は間違いがなくてもWebにあってほしいです。
僕は読む前と、読んでておかしいなと感じたら正誤表を見に行くので・・・・
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
こんにちは。
NULLは、メモリの0番地
と、私が呼んだ本か、何処かのサイトに書かれていた記憶が・・・。
どちらかは、忘れてしまいましたが。(汗
NULLは、メモリの0番地
と、私が呼んだ本か、何処かのサイトに書かれていた記憶が・・・。
どちらかは、忘れてしまいましたが。(汗
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
最近NULLにカーソルが当たって、0で定義されていることを初めて知りました(笑)
C言語暦一ヵ月半程度です。。
C言語暦一ヵ月半程度です。。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> sizumaさん
> うちの学校はC言語習わないので、nullと0が同じ意味だと考えてる人はいないと思います。
なるほど、情報ありがとうございます。
> 結構僕みたいに質問の意図も把握できない人は多いんじゃないかなって勝手に予測してます。
質問の意図ですか..
深い意味はありません。書いたとおりです。
得た情報の利用目的だけ補足しておきます。
1. 講師をやっている学校で、この話題になることがときどきあるので、世の中の状況を把握するための参考にしたい。
2. 現在執筆中の書籍で、この話題を取り上げるかどうか、取り上げるとすればどのような内容にするかの参考にしたい。
といったところです。
> アマゾンの紹介文見ると、僕でも読めそうな内容に感じるので、購入予定です^^
> 本屋で中身確かめてからにすると思いますが、内容楽しみにしてますね。
ありがとうございます。
> あ、僕は正誤表は間違いがなくてもWebにあってほしいです。
そうですね。発売日までに、訂正すべき内容がなくても空の状態で正誤表だけ作っておきます。
> ムンバさん
> NULLは、メモリの0番地
> と、私が呼んだ本か、何処かのサイトに書かれていた記憶が・・・。
なるほど,情報ありがとうございます。
どこのサイトか思い出せそうなら教えてください。
> シエルさん
> 最近NULLにカーソルが当たって、0で定義されていることを初めて知りました(笑)
ということは、それまでNULLと0は別物と考えていたということでしょうか?
> うちの学校はC言語習わないので、nullと0が同じ意味だと考えてる人はいないと思います。
なるほど、情報ありがとうございます。
> 結構僕みたいに質問の意図も把握できない人は多いんじゃないかなって勝手に予測してます。
質問の意図ですか..
深い意味はありません。書いたとおりです。
得た情報の利用目的だけ補足しておきます。
1. 講師をやっている学校で、この話題になることがときどきあるので、世の中の状況を把握するための参考にしたい。
2. 現在執筆中の書籍で、この話題を取り上げるかどうか、取り上げるとすればどのような内容にするかの参考にしたい。
といったところです。
> アマゾンの紹介文見ると、僕でも読めそうな内容に感じるので、購入予定です^^
> 本屋で中身確かめてからにすると思いますが、内容楽しみにしてますね。
ありがとうございます。
> あ、僕は正誤表は間違いがなくてもWebにあってほしいです。
そうですね。発売日までに、訂正すべき内容がなくても空の状態で正誤表だけ作っておきます。
> ムンバさん
> NULLは、メモリの0番地
> と、私が呼んだ本か、何処かのサイトに書かれていた記憶が・・・。
なるほど,情報ありがとうございます。
どこのサイトか思い出せそうなら教えてください。
> シエルさん
> 最近NULLにカーソルが当たって、0で定義されていることを初めて知りました(笑)
ということは、それまでNULLと0は別物と考えていたということでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
NULLと0は使い分けてます
もっぱらVisual C++しか使ってないので
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
なのは知ってますが
もっぱらVisual C++しか使ってないので
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
なのは知ってますが
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> toyoさん
> NULLと0は使い分けてます
> もっぱらVisual C++しか使ってないので
> #ifdef __cplusplus
> #define NULL 0
> #else
> #define NULL ((void *)0)
> なのは知ってますが
確かにVisual C++ではこういう定義ですね。
では、C++では、NULLと0は同じことでしょうか? それでも使い分けますか?
> NULLと0は使い分けてます
> もっぱらVisual C++しか使ってないので
> #ifdef __cplusplus
> #define NULL 0
> #else
> #define NULL ((void *)0)
> なのは知ってますが
確かにVisual C++ではこういう定義ですね。
では、C++では、NULLと0は同じことでしょうか? それでも使い分けますか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
C/C++言語歴:10年強
NULLと0が違うということは何度か読んだことはありますが、
詳細は忘れてしまっています。
デバッガで見てもNULLを代入されたポインタは0と表示されるし、
普段私の意識する範囲では0と同値です。
NULLが0でない処理系を使ったことはないし。
ポインタに0を代入したりすることはないですけど。
NULLと0が違うということは何度か読んだことはありますが、
詳細は忘れてしまっています。
デバッガで見てもNULLを代入されたポインタは0と表示されるし、
普段私の意識する範囲では0と同値です。
NULLが0でない処理系を使ったことはないし。
ポインタに0を代入したりすることはないですけど。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> たいちうさん
情報ありがとうございます。
> 普段私の意識する範囲では0と同値です。
では、次のような使い方はしますか?
char s[10];
memset(s, NULL, 10);
double x = NULL;
情報ありがとうございます。
> 普段私の意識する範囲では0と同値です。
では、次のような使い方はしますか?
char s[10];
memset(s, NULL, 10);
double x = NULL;
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> 一応NULLが0じゃない環境でも動くように書いてるつもりです
NULLが0ではないというのは、具体的にはどのようなケースを想定していますか?
NULLが0ではないというのは、具体的にはどのようなケースを想定していますか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
>>ということは、それまでNULLと0は別物と考えていたということでしょうか?
そうです。
うまくいえませんが、「空っぽ」というまったく別の意味のものだと
思っていました。
そうです。
うまくいえませんが、「空っぽ」というまったく別の意味のものだと
思っていました。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> >>ということは、それまでNULLと0は別物と考えていたということでしょうか?
> そうです。
> うまくいえませんが、「空っぽ」というまったく別の意味のものだと
> 思っていました。
よくわかりました。ありがとうございます。
> そうです。
> うまくいえませんが、「空っぽ」というまったく別の意味のものだと
> 思っていました。
よくわかりました。ありがとうございます。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> では、次のような使い方はしますか?
>
> char s[10];
> memset(s, NULL, 10);
>
> double x = NULL;
絶対無いです。それぞれ'\0'と0を使います。
char型を1バイトの整数として使う場合には0を代入します。
(ちなみに浮動小数点のために0.0等を使うようなこともしません。)
「ポインタに0を代入したりすることはないですけど。」
に含まれるのですが、使い分けをしています。
可読性が下がるし、メリットが見つかりません。
まとめるとこんな感じです
・厳密な定義では違うと知っているが詳細は覚えていない。
・値としては実質的に同じと認識している。
・コーディングスタイルとしては使い分けている。
>
> char s[10];
> memset(s, NULL, 10);
>
> double x = NULL;
絶対無いです。それぞれ'\0'と0を使います。
char型を1バイトの整数として使う場合には0を代入します。
(ちなみに浮動小数点のために0.0等を使うようなこともしません。)
「ポインタに0を代入したりすることはないですけど。」
に含まれるのですが、使い分けをしています。
可読性が下がるし、メリットが見つかりません。
まとめるとこんな感じです
・厳密な定義では違うと知っているが詳細は覚えていない。
・値としては実質的に同じと認識している。
・コーディングスタイルとしては使い分けている。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> ・厳密な定義では違うと知っているが詳細は覚えていない。
> ・値としては実質的に同じと認識している。
> ・コーディングスタイルとしては使い分けている。
よくわかりました。
つまり、NULLと0は同じ意味(つまり互いに交換可能)ではないという認識ですね。
> ・値としては実質的に同じと認識している。
> ・コーディングスタイルとしては使い分けている。
よくわかりました。
つまり、NULLと0は同じ意味(つまり互いに交換可能)ではないという認識ですね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
>>どこのサイトか思い出せそうなら教えてください。
ttp://www2.netf.org/pointer3.html
の、【NULL と ヌル文字】(↑このページの真ん中位)
にあります。
ttp://www2.netf.org/pointer3.html
の、【NULL と ヌル文字】(↑このページの真ん中位)
にあります。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> http://www2.netf.org/pointer3.html(面倒なので、hを補いました)
> の、【NULL と ヌル文字】(↑このページの真ん中位)
> にあります。
なるほど。
NULLと0が同じ意味なのではなく、NULLと0番地が同じということですね。
> の、【NULL と ヌル文字】(↑このページの真ん中位)
> にあります。
なるほど。
NULLと0が同じ意味なのではなく、NULLと0番地が同じということですね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
#define NULL 0
のように、NULLが0に定義されているから、両者は同じ意味だという人は実際多いですね。
(今回得た回答の中では、必ずしも多数はではないようですが...)
もし、そうだとすると、多くの処理系では、
#define SEEK_SET 0
と定義されていますので、SEEK_SETと0は同じ意味だということになります。
NULLと0が同じ意味で、SEEK_SETと0が同じ意味であれば、当然NULLとSEEK_SETは同じ意味でなければなりません。
結果として、
int *p = malloc(10*sizeof(int));
if (p != SEEK_SET)
...
とか
fseek(stream, 0L. NULL);
のような使い方も正しいことになるはずですが、どうなんでしょうね。
のように、NULLが0に定義されているから、両者は同じ意味だという人は実際多いですね。
(今回得た回答の中では、必ずしも多数はではないようですが...)
もし、そうだとすると、多くの処理系では、
#define SEEK_SET 0
と定義されていますので、SEEK_SETと0は同じ意味だということになります。
NULLと0が同じ意味で、SEEK_SETと0が同じ意味であれば、当然NULLとSEEK_SETは同じ意味でなければなりません。
結果として、
int *p = malloc(10*sizeof(int));
if (p != SEEK_SET)
...
とか
fseek(stream, 0L. NULL);
のような使い方も正しいことになるはずですが、どうなんでしょうね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
私はNULL=0と考えてます。
ポインタなら0
数値でも0
と表すと思ってます。
Cくらいしか勉強してません。
ポインタなら0
数値でも0
と表すと思ってます。
Cくらいしか勉強してません。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> ひよこさん
ご意見ありがとうございます。
> 私はNULL=0と考えてます。
> ポインタなら0
> 数値でも0
> と表すと思ってます。
では、
char s[10];
memset(s, NULL, 10);
double x = NULL;
といった使い方は正しいという認識でよろしいでしょうか?
ご意見ありがとうございます。
> 私はNULL=0と考えてます。
> ポインタなら0
> 数値でも0
> と表すと思ってます。
では、
char s[10];
memset(s, NULL, 10);
double x = NULL;
といった使い方は正しいという認識でよろしいでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
char s[10];
memset(s, NULL, 10);
>>sの配列の要素分0で初期化と読めます。
double x = NULL;
>>xを0で初期化してると読めると思います。
すみません、今思ったのですがNULLは
ポインタは0番地を指す(存在してない?)か指していないを表すフラグのような感じかもしれません。
memset(s, NULL, 10);
>>sの配列の要素分0で初期化と読めます。
double x = NULL;
>>xを0で初期化してると読めると思います。
すみません、今思ったのですがNULLは
ポインタは0番地を指す(存在してない?)か指していないを表すフラグのような感じかもしれません。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> char s[10];
> memset(s, NULL, 10);
> >>sの配列の要素分0で初期化と読めます。
> double x = NULL;
> >>xを0で初期化してると読めると思います。
処理系によってはそう振る舞うでしょうね。
> すみません、今思ったのですがNULLは
> ポインタは0番地を指す(存在してない?)か指していないを表すフラグのような感じかもしれません。
フラグというのがよくわかりませんが、NULLは0番地をあらわすということでしょうか?
> memset(s, NULL, 10);
> >>sの配列の要素分0で初期化と読めます。
> double x = NULL;
> >>xを0で初期化してると読めると思います。
処理系によってはそう振る舞うでしょうね。
> すみません、今思ったのですがNULLは
> ポインタは0番地を指す(存在してない?)か指していないを表すフラグのような感じかもしれません。
フラグというのがよくわかりませんが、NULLは0番地をあらわすということでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> lbfuvabさん
> NULLはポインタ、0はただの即値なので同じ物とは考えてないです。
即値なので、というのがよくわからなかったのですが、
#define ZERO 0
というマクロを作るなどすれば、NULLとZEROは同じ意味になり得ますか?
> NULLはポインタ、0はただの即値なので同じ物とは考えてないです。
即値なので、というのがよくわからなかったのですが、
#define ZERO 0
というマクロを作るなどすれば、NULLとZEROは同じ意味になり得ますか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
フラグというのがよくわかりませんが、NULLは0番地をあらわすということでしょうか?
あんまり深く考えたことがないのですが、うまく説明できないのですが
もし0番地が使える処理系でも動くようにしたとしたら
deleteとかがNULLだったら削除しないということを考えると
NULL=指していない(無効)みたいな感じかもしれません。
結果的にNULL=0はポインタの場合0番地(無効空間)を表すのだと思います。
あんまり深く考えたことがないのですが、うまく説明できないのですが
もし0番地が使える処理系でも動くようにしたとしたら
deleteとかがNULLだったら削除しないということを考えると
NULL=指していない(無効)みたいな感じかもしれません。
結果的にNULL=0はポインタの場合0番地(無効空間)を表すのだと思います。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> もし0番地が使える処理系でも動くようにしたとしたら
> deleteとかがNULLだったら削除しないということを考えると
> NULL=指していない(無効)みたいな感じかもしれません。
> 結果的にNULL=0はポインタの場合0番地(無効空間)を表すのだと思います。
だとすると、単なる数値にNULLを使うのはどういうことなのでしょうか?
> deleteとかがNULLだったら削除しないということを考えると
> NULL=指していない(無効)みたいな感じかもしれません。
> 結果的にNULL=0はポインタの場合0番地(無効空間)を表すのだと思います。
だとすると、単なる数値にNULLを使うのはどういうことなのでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> 0とは限らないとは呼んだ事がありますが、
> 基本的には0なのかなと考えていました。
わかりました。ありがとうございます。
> 基本的には0なのかなと考えていました。
わかりました。ありがとうございます。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
私は0と書くのでNULLは使いません。
ただ、NULLが0をあらわすだけなので見た目的にわかりやすくするためかもしれません。
ただ、NULLが0をあらわすだけなので見た目的にわかりやすくするためかもしれません。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> 私は0と書くのでNULLは使いません。
> ただ、NULLが0をあらわすだけなので見た目的にわかりやすくするためかもしれません。
なるほど、そういうことですね。
> ただ、NULLが0をあらわすだけなので見た目的にわかりやすくするためかもしれません。
なるほど、そういうことですね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
NULLは空ポインタ定数:
値0をもつ整数定数式又はその定数式を型void*にキャストした式のこと
みたいな感じの記述をX3010で見たので、
#define NULL 0 とあったとしてもそれはポインタとして
何処も指していない状態を0としてるだけなんだと考えてそれっぽく使い分けてます。
基本的にポインタへの比較や代入でしかNULLは使ってないです(多分^^;)。
えーと、つまり、私はNULLと0は同じ意味だとは思ってないです。
C言語についてのみで、他の言語についてはよく知りません。
値0をもつ整数定数式又はその定数式を型void*にキャストした式のこと
みたいな感じの記述をX3010で見たので、
#define NULL 0 とあったとしてもそれはポインタとして
何処も指していない状態を0としてるだけなんだと考えてそれっぽく使い分けてます。
基本的にポインタへの比較や代入でしかNULLは使ってないです(多分^^;)。
えーと、つまり、私はNULLと0は同じ意味だとは思ってないです。
C言語についてのみで、他の言語についてはよく知りません。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
みなさん、ありがとうございます。
だいたい状況が見えてきました。
念のため確認しておきますが、今回の質問で問題にしているのは、NULLと0が同じ意味かどうかについてです。
空ポインタの内部表現がどうであるかは問題にしていません。
また、NULLの値が0かどうかも問題にしていません。
この点を勘違いされていそうな意見もあるようですので...
だいたい状況が見えてきました。
念のため確認しておきますが、今回の質問で問題にしているのは、NULLと0が同じ意味かどうかについてです。
空ポインタの内部表現がどうであるかは問題にしていません。
また、NULLの値が0かどうかも問題にしていません。
この点を勘違いされていそうな意見もあるようですので...
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
遅まきながら。
私は↓のように考えています。
NULLと0は意味が全く異なる。
ただ、言語処理系はNULLと0は同じものであるかのように解釈する(評価するというべきか)。
私は↓のように考えています。
NULLと0は意味が全く異なる。
ただ、言語処理系はNULLと0は同じものであるかのように解釈する(評価するというべきか)。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
C言語では、NULLは 0 であるとは限らない。
C++言語では、NULLは0として扱って良い。
と言う、認識です。
C++言語では、NULLは0として扱って良い。
と言う、認識です。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> ぽこさん
> NULLと0は意味が全く異なる。
> ただ、言語処理系はNULLと0は同じものであるかのように解釈する(評価するというべきか)。
ご意見、ありがとうございます。
では、NULLを使うべきところに0を使うのはありだと思いますか?
> NULLと0は意味が全く異なる。
> ただ、言語処理系はNULLと0は同じものであるかのように解釈する(評価するというべきか)。
ご意見、ありがとうございます。
では、NULLを使うべきところに0を使うのはありだと思いますか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> ご意見、ありがとうございます。
> では、NULLを使うべきところに0を使うのはありだと思いますか?
なし、です。
同じように解釈されるとはいえ、意味が異なるのでソースコードを
書く場合は明確に区別すべき、と考えています。
> では、NULLを使うべきところに0を使うのはありだと思いますか?
なし、です。
同じように解釈されるとはいえ、意味が異なるのでソースコードを
書く場合は明確に区別すべき、と考えています。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> > では、NULLを使うべきところに0を使うのはありだと思いますか?
> なし、です。
> 同じように解釈されるとはいえ、意味が異なるのでソースコードを
> 書く場合は明確に区別すべき、と考えています。
なるほど。
C++では伝統的に、NULLではなく空ポインタに0が使われてきましたが、それについてはいかがでしょうか?
> なし、です。
> 同じように解釈されるとはいえ、意味が異なるのでソースコードを
> 書く場合は明確に区別すべき、と考えています。
なるほど。
C++では伝統的に、NULLではなく空ポインタに0が使われてきましたが、それについてはいかがでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> なるほど。
> C++では伝統的に、NULLではなく空ポインタに0が使われてきましたが、それについてはいかがでしょうか?
なんと答えれば良いか、なかなか良い表現が見つかりません。
私自身は伝統的な使われ方は「どうでもいい」という立ち位置です。
#伝統は、既存のコーディング規約の前では無力です。。
#コーディング規約の善し悪しは置いといて。
#C++ではNULLが0である事が保証されていましたっけ?
#(あるいはその逆が保証されていましたっけ?)
#型安全やマクロは悪って考えから、どちらかが保証されているとは思うのですが。
#すみません、勉強不足でこの辺分かりません。
C++では0には空ポインタって意味もあったとしても、「俺的コーディング規約」は
『C++ではNULLは「Cと同様」空ポインタって意味です、と覚えておけば、覚えるべきことがひとつ減る。だからC++でもNULLを使うのだ』
ってところですかねえ。
#「お前の知識不足、理解不足」だと言われれば「仰る通り」としか答えようが無いですね。。
> C++では伝統的に、NULLではなく空ポインタに0が使われてきましたが、それについてはいかがでしょうか?
なんと答えれば良いか、なかなか良い表現が見つかりません。
私自身は伝統的な使われ方は「どうでもいい」という立ち位置です。
#伝統は、既存のコーディング規約の前では無力です。。
#コーディング規約の善し悪しは置いといて。
#C++ではNULLが0である事が保証されていましたっけ?
#(あるいはその逆が保証されていましたっけ?)
#型安全やマクロは悪って考えから、どちらかが保証されているとは思うのですが。
#すみません、勉強不足でこの辺分かりません。
C++では0には空ポインタって意味もあったとしても、「俺的コーディング規約」は
『C++ではNULLは「Cと同様」空ポインタって意味です、と覚えておけば、覚えるべきことがひとつ減る。だからC++でもNULLを使うのだ』
ってところですかねえ。
#「お前の知識不足、理解不足」だと言われれば「仰る通り」としか答えようが無いですね。。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> 私自身は伝統的な使われ方は「どうでもいい」という立ち位置です。
それもひとつの考え方ですね。
> C++では0には空ポインタって意味もあったとしても、「俺的コーディング規約」は
> 『C++ではNULLは「Cと同様」空ポインタって意味です、と覚えておけば、覚えるべきことがひとつ減る。だからC++でもNULLを使うのだ』
> ってところですかねえ。
C++でNULLを使うこと自体は問題ありません。
> #C++ではNULLが0である事が保証されていましたっけ?
> #(あるいはその逆が保証されていましたっけ?)
処理系定義ですね。
それもひとつの考え方ですね。
> C++では0には空ポインタって意味もあったとしても、「俺的コーディング規約」は
> 『C++ではNULLは「Cと同様」空ポインタって意味です、と覚えておけば、覚えるべきことがひとつ減る。だからC++でもNULLを使うのだ』
> ってところですかねえ。
C++でNULLを使うこと自体は問題ありません。
> #C++ではNULLが0である事が保証されていましたっけ?
> #(あるいはその逆が保証されていましたっけ?)
処理系定義ですね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
誤解を招きそうなので、少し補足しておきます。
> #C++ではNULLが0である事が保証されていましたっけ?
> #(あるいはその逆が保証されていましたっけ?)
CでもC++でも、NULLは空ポインタ定数に展開されるマクロです。
空ポインタ定数は...
Cでは、値がゼロの整数定数式か、それをvoid*でキャストしたものです。
C++では、値がゼロの汎整数定数式です。
規格に合致するかどうかはともかく、CでもC++でも、NULLを0に定義したのでは問題が生じることがあります。
例えば、intが16ビットでvoid*が32ビットの環境や、intが32ビットでvoid*が64ビットの環境では、単にNULLを0として定義すると...
printf("%p\n", NULL);
とした場合におかしくなります。
このような場合は、0Lや0LLに定義する必要があるのですが、必ずしもそうなっていない処理系がありますね。
> #C++ではNULLが0である事が保証されていましたっけ?
> #(あるいはその逆が保証されていましたっけ?)
CでもC++でも、NULLは空ポインタ定数に展開されるマクロです。
空ポインタ定数は...
Cでは、値がゼロの整数定数式か、それをvoid*でキャストしたものです。
C++では、値がゼロの汎整数定数式です。
規格に合致するかどうかはともかく、CでもC++でも、NULLを0に定義したのでは問題が生じることがあります。
例えば、intが16ビットでvoid*が32ビットの環境や、intが32ビットでvoid*が64ビットの環境では、単にNULLを0として定義すると...
printf("%p\n", NULL);
とした場合におかしくなります。
このような場合は、0Lや0LLに定義する必要があるのですが、必ずしもそうなっていない処理系がありますね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> やんちさん
すみません。回答を見落としていました。
> C言語では、NULLは 0 であるとは限らない。
> C++言語では、NULLは0として扱って良い。
なるほど、CとC++では異なるということですね。
では、C++であれば、
char s[10];
std::memset(s, NULL, 10);
double x = NULL;
はありということでしょうか?
すみません。回答を見落としていました。
> C言語では、NULLは 0 であるとは限らない。
> C++言語では、NULLは0として扱って良い。
なるほど、CとC++では異なるということですね。
では、C++であれば、
char s[10];
std::memset(s, NULL, 10);
double x = NULL;
はありということでしょうか?
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
この件は何年か前からチョコチョコ掲示板でも話題になった事があったので知っているものの
0ではない処理系を見た事が無いので、普段意識していませんし
私が昔掲示板を見ていなければ知らなかったかも知れません。
同期に聞いてみたら何人が知ってるだろうかと想像すると知らない人はかなり多いと思います。
しかしよほどレアなコンパイラを使うような環境でなければ知らなくても問題ないような気もします・・。
0ではない処理系を見た事が無いので、普段意識していませんし
私が昔掲示板を見ていなければ知らなかったかも知れません。
同期に聞いてみたら何人が知ってるだろうかと想像すると知らない人はかなり多いと思います。
しかしよほどレアなコンパイラを使うような環境でなければ知らなくても問題ないような気もします・・。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> Dixqさん
No:53323で書いたように、内部表現の話ではありません。
単純にNULLと0が同じか、ということです。
つまり、++a と a += 1 のように、文脈を問わず、NULLと0は交換可能かということです(同じ意味ならどちらを使ってもよいはず)。
> しかしよほどレアなコンパイラを使うような環境でなければ知らなくても問題ないような気もします・・。
ですので、コンパイラは関係ありません。
No:53323で書いたように、内部表現の話ではありません。
単純にNULLと0が同じか、ということです。
つまり、++a と a += 1 のように、文脈を問わず、NULLと0は交換可能かということです(同じ意味ならどちらを使ってもよいはず)。
> しかしよほどレアなコンパイラを使うような環境でなければ知らなくても問題ないような気もします・・。
ですので、コンパイラは関係ありません。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
あぁすみません、全部読んでからコメントするべきでしたね;
Cを勉強し始めたころ、私の理解の順番としては
「NULLってポインタに付ける形式の0みたいなものなんだな」
↓数ヵ月後
「あれ?defineで0そのものなのか」
↓
「いや0ポインタなのか」
↓
「あれ、処理系によって違う?」
↓
???
みたいな期間が長くあったように思います。
ポインタの代入や比較にしかNULLを使っているのを見た事が無かったので、
最初から0そのものと同義だとは思いませんでした。
これはちょっと聞いてみないとどれ位の人がどう解釈しているかわからないですねぇ。
Cを勉強し始めたころ、私の理解の順番としては
「NULLってポインタに付ける形式の0みたいなものなんだな」
↓数ヵ月後
「あれ?defineで0そのものなのか」
↓
「いや0ポインタなのか」
↓
「あれ、処理系によって違う?」
↓
???
みたいな期間が長くあったように思います。
ポインタの代入や比較にしかNULLを使っているのを見た事が無かったので、
最初から0そのものと同義だとは思いませんでした。
これはちょっと聞いてみないとどれ位の人がどう解釈しているかわからないですねぇ。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
遅くなりましたが、
私はNULLと0を別の意味と考えています。
しかしながら、if()の中では0をみなされるという認識です。
なぜなら以下のようなコードが時々見られるからです。
int * p;
/*中略*/
if(p)/*ポインタがNULL出なければ*/
私はNULLと0を別の意味と考えています。
しかしながら、if()の中では0をみなされるという認識です。
なぜなら以下のようなコードが時々見られるからです。
int * p;
/*中略*/
if(p)/*ポインタがNULL出なければ*/
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> ポインタの代入や比較にしかNULLを使っているのを見た事が無かったので、
> 最初から0そのものと同義だとは思いませんでした。
結構まともなコードにしか触れていませんね。
今回も何度も例に出したような、
char s[10];
memset(s, NULL, 10);
double x = NULL;
のようなコード(とくに前者)は、割と普通に見かけますよ。
http://www.google.co.jp/search?client=s ... HCcbipyOoBで検索するだけでも、ウヨウヨ出てきます。
> これはちょっと聞いてみないとどれ位の人がどう解釈しているかわからないですねぇ。
今回、この問題を取り上げるべきかどうか迷ったのは、初心者叩きになるのが嫌だったからです。
うちのサイトのC/C++迷信集では、どちらかというと経験の浅い人たちに嘘を教えている人たちを叩いています。
ただ、ちょっと難しすぎるという批判もあり、レベルを下げようとすると、結果的に初心者~初級者に矛先が向くことになります。
今回、いろいろな意見をいただいた感じでは、とりあえず取り上げた方がよさそうな気がしてきました。
どう表現するかは、また別の悩みがありますが...
> 最初から0そのものと同義だとは思いませんでした。
結構まともなコードにしか触れていませんね。
今回も何度も例に出したような、
char s[10];
memset(s, NULL, 10);
double x = NULL;
のようなコード(とくに前者)は、割と普通に見かけますよ。
http://www.google.co.jp/search?client=s ... HCcbipyOoBで検索するだけでも、ウヨウヨ出てきます。
> これはちょっと聞いてみないとどれ位の人がどう解釈しているかわからないですねぇ。
今回、この問題を取り上げるべきかどうか迷ったのは、初心者叩きになるのが嫌だったからです。
うちのサイトのC/C++迷信集では、どちらかというと経験の浅い人たちに嘘を教えている人たちを叩いています。
ただ、ちょっと難しすぎるという批判もあり、レベルを下げようとすると、結果的に初心者~初級者に矛先が向くことになります。
今回、いろいろな意見をいただいた感じでは、とりあえず取り上げた方がよさそうな気がしてきました。
どう表現するかは、また別の悩みがありますが...
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
> 組木紙織さん
> 私はNULLと0を別の意味と考えています。
> しかしながら、if()の中では0をみなされるという認識です。
ifの条件式では「0とみなされる」というより「偽とみなされる」ということですよね。
> 私はNULLと0を別の意味と考えています。
> しかしながら、if()の中では0をみなされるという認識です。
ifの条件式では「0とみなされる」というより「偽とみなされる」ということですよね。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
>ifの条件式では「0とみなされる」というより「偽とみなされる」ということですよね。
結局はそうなるのかな。
if(NULL)
↓
if(0)
↓
if(false)
といった脳内変換をしています。
結局はそうなるのかな。
if(NULL)
↓
if(0)
↓
if(false)
といった脳内変換をしています。
Re:【雑談】 NULLと0が同じ意味だと考えている人はどれぐらいいますか?
ちょっと、タイトルの趣旨とは違うかもしれませんし
マニアックな?サイトかもしれませんが・・・
NULLについて
http://www.geocities.jp/bleis_tift/cpp/null.html
↑C++の研究室?内のサイト内のページだと思います。
では、今度こそ、失礼しますっ!w
マニアックな?サイトかもしれませんが・・・
NULLについて
http://www.geocities.jp/bleis_tift/cpp/null.html
↑C++の研究室?内のサイト内のページだと思います。
では、今度こそ、失礼しますっ!w