上QQ阅读APP看书,第一时间看更新
3.5 疑难解惑
疑问1 C++在代码移植中,使用整型时应注意什么?
(1)出于效率考虑,应该尽量使用int和unsigned int。
(2)当需要指定容量的整型时,不应该直接使用short、int、long等,因为在不同的编译器上它们的容量不相同。此时应该定义它们相应的宏或类型。例如在Visual C++6.0中,可以如下定义:
在代码中使用UBYTE、SBYTE、UWORD等,这样当代码移植的时候只需要修改相应的类型即可。
疑问2 在C++中,0所扮演的不同角色是什么?
(1)整型0
这是最熟悉的一个角色。作为一个int类型,整型0占据32位的空间。
(2)空指针NULL
NULL是一个表示空指针常量的宏。
(3)字符串结束标志'\0'
'\0'与上述两种情形有所不同,它是一个字符。
(4)逻辑FALSE/false
虽然将FALSE/false放在了一起,但是你必须清楚FALSE和false之间不只是大小写这么简单的差别。false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define定义的宏,用来解决程序在C与C++环境中的差异。
疑问3 typedef和define的区别是什么?
在某些情况下,使用它们会达到相同的效果,但是它们有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一个已有的数据类型起一个别名,而#define用来定义一个宏定义常量。