CとC++の違い
936 ワード
1.FALSE/TRUEとfalse/trueの違い:false/trueはc言語にはない、標準C++言語に新たに追加されたキーワードであるが、FALSE/TRUEはdefineを通じて、用途はCとC++における環境の違いを解決することであり、以下はFALSE/TRUEのwindefである.hの定義:
2.boolの大きさとBOOLの違い:
C 99以前はbool型は定義、C 99ではstdbool.hで定義した_Boolはboolで、もちろんtrueやfalseも定義されていません.しかしC++にはbool型があり、trueやfalseも定義されている.boolはC++で1バイトを占有し、BOOLはintタイプであり、intタイプの大きさは具体的な環境によって決まる.このようにfalse/trueは1バイトしか占有しないが、TRUE/FALSEは具体的な環境では、以下はBOOLがwindefにある.hの定義:
3.NULLと0の違い:windefを見てみましょう.hにおけるNULLの定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
すなわちFALSE/TRUEはintタイプであり、false/trueはboolタイプである.だから両者は違いますが、私たちは使用中にこのような感じがしません.C++が暗黙的な変換をしてくれるからです.2.boolの大きさとBOOLの違い:
C 99以前はbool型は定義、C 99ではstdbool.hで定義した_Boolはboolで、もちろんtrueやfalseも定義されていません.しかしC++にはbool型があり、trueやfalseも定義されている.boolはC++で1バイトを占有し、BOOLはintタイプであり、intタイプの大きさは具体的な環境によって決まる.このようにfalse/trueは1バイトしか占有しないが、TRUE/FALSEは具体的な環境では、以下はBOOLがwindefにある.hの定義:
typedef int BOOL;
3.NULLと0の違い:windefを見てみましょう.hにおけるNULLの定義:
#ifndef NULL
#ifdef __cplusplus// C++
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
だから、違いはありませんが、Cの中で強制的なタイプ変換をします.