1.常量分类

(1)整型常量 只有10进制有正负整数

%d 十进制占位符 以10进制方式打印整型常量

%o 八进制占位符 以8进制方式打印整型常量

%x 十六进制占位符 以16进制方式打印整型常量

10进制整型书写 23

8进制整型书写 0开头 023

16进制整型书写 ox开头 ox23


short int  2个字节 16位 有符号(正负)-32768 ~ 32767 

int  4个字节 32位 

long int 8个字节 64位


u 无符号int型

ul/lu 无符号长整型


整数可以分为正整数和负整数存储,正整数为原码存储,负整数为补码存储,第一个为符号位,0表示负数,1表示正数


6 占两个字节,分正负 可以存储为1000000000000110 ,

得到补码的方式:原码->反码(变成相反的数)->补码(+1)

-6  00000000000000110->1111111111111001->111111111111010

(2)实型常量

一般形式的实数:由整数,小数点,小数三部分组成。整数部分或小数部分可以省略 例如,12.345、47.0、-.234、47.

指数形式的实数:由尾数,字母e/E,小数点组成 例如.2e3、1.2e-3

(3)字符常量

‘0’-48 ‘A’-65 ‘a’-97

\n  换行  -10

\t 水平制表 -9

\b 退格  -8

\r  回车 -13

\f  换页 -12

\\ 反斜杠“\” -92

\’ 单引号 -39

\“ 双引号 -34

\ddd 1到3位8进制数所代表的字符  最多截取斜杠后面3位八进制数

\xhh 1到2位16进制数所代表的字符 最多截取斜杠x后面2位16进制数

(4)枚举常量

一般定义整型常量,不加值默认从0开始计数,依次加1,从设定值开始,从值依次加1

enum weekday{

    monday,

    tuesday,

    wednesday = 11,

    thursday,

    friday,

    saturday = 33,

    sunday

    

};


int main(int argc, char * argv[]) {

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

        printf("%d%d%d%d%d%d%d",monday,tuesday,wednesday,thursday,friday,saturday,sunday);

    }

}

(5)宏定义 不能加分号

(6)零值 即ASCII码值为0的字符

(7)空值 数字0,\0, 指针NULL

(8)const常量

作用: (1)修饰一般变量,可以把变量变成常量符号

(2)修饰指针变量


2.指针,一个16进制的地址

取地址符:&   %p:以16进制地址打印

取出地址的数值 :*

指针变量的一般形式

类型标识符 *指针变量名 int a =100; int *nA = &a;  

 必须使用同类型的变量存储同类型的变量地址

如果初始化不赋值,需要初始化为NULL


char * 字符串变量

const char * 字符串常量


3.const修饰指针

(1)const int *p  能改变p存储的地址,但是不可以改变存储的地址中的数据

(2)int const *p  效果同(1)

(3)int *const p;  定义时必须初始化,不能改变地址,但可以改变存储地址中的数据

(4)const int *const p; 既不能改变p存储的地址,也不可以改变存储的地址中的数据,定义时必须初始化


4.static静态变量

(1)修饰局部变量,第一次调用时开辟内存空间,调用完后不回收内存,保留之前的数据,再次调用不会重新开辟内存和初始化

(2)静态全局变量,全局变量可以被外部文件访问,静态全局变量只能被本文件使用


5.extern关键字使用

(1)声明变量的关键字

条件预编译:只编译其中的一个条件,另一个不编译

#if

#else

#endif