Jos*_*ane 5 floating-point objective-c ios c-preprocessor
说这样做有什么区别?
#define NUMBER 10
Run Code Online (Sandbox Code Playgroud)
和
float number = 10;
Run Code Online (Sandbox Code Playgroud)
在什么情况下我应该使用一个而不是另一个?
Phi*_* T. 14
#define NUMBER 10
Run Code Online (Sandbox Code Playgroud)
将创建一个将由预处理器执行的字符串替换(即在编译期间).
float number = 10;
Run Code Online (Sandbox Code Playgroud)
将在二进制文件的数据段中创建一个浮点数并将其初始化为10.即它将具有一个地址并且是可变的.
所以写作
float a = NUMBER;
Run Code Online (Sandbox Code Playgroud)
将与写作相同
float a = 10;
Run Code Online (Sandbox Code Playgroud)
而写作
float a = number;
Run Code Online (Sandbox Code Playgroud)
将创建一个内存访问.