多字符记号

单引号与双引号

printf("Hello world\n");
//等价于
char hello[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\n', 0 };
printf(hello);

声明

变量声明=类型+对该类型求值的表达式

类型的模型=变量声明去除变量名和分号后用括号括起来

float *a();
//a是一个返回float指针的函数,模型为
(float *())

//调用地址0的函数
//调用变量
(*a)();
//a为返回void的函数的指针
void (*b)();
//模型为
(void (*)())
//将0转为此类型
(void(*)())0;
//调用转换后的变量
(*(void(*)())0)();

函数调用

需要参数列表,可无参数

f();//函数调用
f;//函数地址求值,不调用

表达式求值顺序

函数参数转换

规则

  1. int 短的整型转换为 int
  2. double 短的浮点转换为 double
  3. 其余不转换

指针非数组

char 指针变量是指向其数组第 0 个元素的指针

除法

q = a / b;
r = a % b;

保证

不一定保证