- ベストアンサー
NULL
C言語で、0の代入とNULLの代入はバイナリレベルでは同じ事だと聞いたのですが本当なんでしょうか? とすると int i = 0; と int i= NULL; は、同じ事なんでしょうか。 また、 if(!aaaa){ と if(aaaa == NULL){ は同じ条件文なんでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#5537
回答No.2
> C言語で、0の代入とNULLの代入はバイナリレベルでは > 同じ事だと聞いたのですが本当なんでしょうか? ポインタ変数に 0 を代入するのと,NULL を代入するのは同じことです。 NULL は単なるマクロで, #define NULL 0 #define NULL ((void *)0) のいずれかですから。 詳細は参考 URL (C-FAQ の5章です)を参照してください。 残りの疑問に対する回答もあります。
その他の回答 (1)
- MovingWalk
- ベストアンサー率43% (2233/5098)
回答No.1
NULLは、NULLポインタですので型はポインタ型です。 int型の値として利用するのは、左右の型が一致しないのでお勧めしません。 (コンパイラによってはWarningが出ます) C言語では、零を偽、非零を真として扱いますのでaaaaがポインタ型なら 同じと考えても差し支えありません。 C言語でミスの少ないコーディングをするためには、型を意識したり、 わかりやすいコーディングをすることが重要ですので、そのあたりを 注意される方がいいかと思います。
質問者
お礼
御回答ありがとうございます。 大変勉強になりました。
お礼
御回答ありがとうございます。 大変勉強になりました。