Day 02 - Variables 与 Constants

Variables(变量)

在 Objective-C 中的变量定义(Definition)

定义 一个变量 意味着告诉编译器变量存在哪里以及占了多少储存空间
变量指定一种数据类型,可以包含一个或多个该类型的变量。

type variable_list;

ex.

int i, j, k;
char c, ch;
float f, salary;
double d;

变量可以在声明(declaration)时初始化

type variable_name = value;

ex.

extern int d = 3, f = 5;    // declaration of d and f.
int d = 3, f = 5;           // definition and initializing d and f.
byte z = 22;                // definition and initializes z.
char x = 'x';               // the variable x has the value 'x'.

对於没有初始化的定义,具有静态储存持续时间(static storage duration)的变量为 NULL,而其他变量的初始值则为未定义(undefined)

在 Objective-C 中的变量声明(Declaration)

变量声明:向编译器保证存在有一个具有一定类型及名称的变量,以便编译器进一步编译,而无需提供该变量的完整讯息。
变量声明 只有在编译时才有意义,编译器在程序链接时才需要实际的声明。
在使用多个文件时而只在其中一个文件定义变数时,变量声明很有用。可以在任何地方使用extern声明变量。
虽然可以声明一个变量多次,但它只会被定义一次。

#import <Foundation/Foundation.h>

// 声明变量
extern int a, b;
extern int c;
extern float f;

int main () {
  // 定义变量
  int a, b;
  int c;
  float f;
 
  // 初始化
  a = 10;
  b = 20;
  
  c = a + b;
  NSLog(@"value of c : %d \n", c);

  f = 70.0/3.0;
  NSLog(@"value of f : %f \n", f);
 
  return 0;
}

相同的概念可以用在 function 声明,在声明时提供名称,实际定义可以在任何地方拿到。

// 声明function
int func(void);

int main() {
   // function call
   int i = func();
}

// 定义function
int func() {
   return 0;
}

Constants(常量)

常量是指为固定值,在执行过程中不会改变。这固定的值也被称为文字(literals)。
常量可以是任何基本的类型,ex. integer, floating, character, string literal,enumeration

整数文字

整数文字可以是十进,八进或十六进位的常量。
前缀指定基本或基数:0x或0X为十六进位,八进位为0。
整数文字也可以有”一个“後缀,即U和L的组合。後缀可以是大写或小写,并且可以在任何顺序。

212         /* Legal */
215u        /* Legal */
0xFeeL      /* Legal */
078         /* Illegal: 八进位没有8 */
032UU       /* Illegal: 不能重复後缀 */

以下为其他类型的整数文字例子:

85         /* decimal(十进位) */
0213       /* octal(八进位) */
0x4b       /* hexadecimal(十六进位) */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

字符常量(Character Constants)

字符在单引号中,ex. 'X' ,可以储存在简单的 char 类型。

字符可以是:

  1. 普通的字符(ex.'x')
  2. 转义序列(escape sequence)(ex. '\t'):有特殊意义
  3. 通用字符(ex.'\u02C0')

转义序列:

转义序列 (前面都要再加个斜线) 意思
\ 文字
' '文字
" "文字
? ?文字
a 警告or钟
b Backspace
f 换页
n 换行
r return
t 水平tab
v 垂直tab
ooo ㄧ到三位数的八进位
xhh 一到多位的十六进位数

字串文字(String Literals)

文字在双引号中,字串可以包含字符、转义序列、通用字符。

定义常量

在 C 有两种简单的方法:

  1. 使用#define预处理.
  2. 使用const关键字.

#define 预处理

使用#define预处理定义一个常数

#define identifier value

ex.

#import <Foundation/Foundation.h>

#define HEIGHT 30
#define WIDTH 5

int main() {
    
    int area;
    
    area = HEIGHT * WIDTH;
    
    NSLog(@"面积: %d",area);
    
    return 0;
}
2021-09-09 01:26:38.271407+0800 TestOC[65072:1959114] 面积: 150

const 关键字

const修饰符可以保护变量不被修改。
可以使用const来声明常量的前缀与特定类型如下:

const type variable = value;

ex.

#import <Foundation/Foundation.h>

int main() {
    
    const int HEIGHT = 30;
    const int WIDTH = 5;
    
    int area;
    
    area = HEIGHT * WIDTH;
    
    NSLog(@"面积: %d",area);
    
    return 0;
}
2021-09-09 01:30:34.893086+0800 TestOC[65168:1964891] 面积: 150

<<:  Day7 开始使用Git

>>:  Day 03:转吧转吧七彩霓虹灯之 p10k

Android Studio - AlertDialog - 单选列表

今天介绍一下单选的列表 透过简单的程序码就可以做出一个清晰易懂的选择表单 那就马上附上我的程序码~ ...

铁人赛 Day30 -- 铁人赛最後一天啦

经历了30天的铁人赛後,再次将我之前所学的再次地复习了一遍, 也藉此更了解到我之前到底都学了什麽,可...

Day29:翻译蒟蒻

当我们的程序可能会有其他语言使用者时,就得开始考虑国际化的问题了,专业术语叫i18n: i n t ...

D11/ 要怎麽显示动态资料的画面 - State

今天大概会聊到的范围 State Gesture Modifier 在之前,都只是在介绍比较静态的...

[Day 29] 为什麽欧洲我最喜欢的是义大利

身为吃货,对国家的喜好 一定程度一定是透过吃来评分的 义大利是我继日本之後,超级爱的一个国家 回访...