初始化
int a = 10;
10叫初始化器
float类型变量
float a = 1.0f
printf("%f\n", a);
// 1.000000
float a = 1.0;
printf("%f\n", a);
// 1.000000,但是会警告
float a = 1f;
printf("%f\n", a);
// 报错
float a = 1;
printf("%f\n", a);
// 1.000000
推荐写法:float a = 1.0f;
注意:
- 强制显示小数点后几位 %.2f
- 多少空格 %3f (小数点也占一个空格),前面腾出空格
- 读取一个float类型的数
scanf("%f", &a);
定义常量的名字
#define HELLO 20
// 名称大写, 不加逗号
#define HELLO (1.0f/3.1415f)
也可以定义表达式
标识符
- 只能以字母、$和下划线开头
- 由数字、字母、$和下划线组成
预处理指令
- include头文件
- 宏
- 预处理指令要求独立成行
书写规范
printf("To C or not to C:
that is the question.\n")
/*** wrong ***/
// 后面会有解决方法
解决方法1
printf("To C or not to C:\
that is the question.\n")
// 加上\(拼接)
// 第二行要从下一行的起始位置开始,不能缩进
// CLion中会报错,VS2022不会
解决方法2
printf("To C or not to C:"
"that is the question.\n");
/*** 可以缩进 ***/
Q&A
-
exit(0) 和 return 0当出现在main函数时,是完全等价的
-
早期编译器会删除每条注释中的字符
a/**/b = 0;
会被理解为ab = 0
现在根据C标准,编译器必须用一个空格字符替换每条注释语句
因此会得到
a b = 0;
-
传统注释(
/*...*/
)不续嵌套以下代码就是不合法的
/*
/*** wrong ***/
*/
但是这样是合法的
/*
//hello
//h
*/
更好的屏蔽方式(条件屏蔽)
#if 0
...
#endif
// 条件屏蔽
- 包含小数点但是不以f结尾的小数是double
- 霍纳法则(Horner法则),减少乘法次数
3x5+2x4-5x3-x2+7x-6
如下多项式求值法则
((((3x+2)x-5)x-1)x+7)x-6