C语言基础
1 变量
程序运行期间值允许改变。变量会在内存分配存储空间,通过变量名访问,先定义,后使用。
1.1 变量命名约束
- 组成字符仅限字母、数字、下划线,首字符不能为数字。
- 禁止和C语言关键字重名。
- 尽量不与标准库函数冲突。
- 命名推荐见名知意,可选驼峰命名或下划线命名。
1.2 基础数据类型
整型:short、unsigned short、int、unsigned int、long、unsigned long
浮点型:float、double
字符型:char、unsigned char
布尔型:bool,依赖头文件 <stdbool.h>
1.3 初始化与赋值
初始化:定义变量时直接赋予初始值。
赋值:变量定义完成后,通过 = 修改存储内容。
局部变量未初始化时内存为随机值,禁止直接参与运算。
2 表达式与类型转换
表达式由运算符、常量、变量组合构成,任意表达式具备数据类型与运算结果。
2.1 隐式类型转换
混合运算时自动转换,转换方向:低精度向高精度提升。
转换层级参考:char/short → int → long → unsigned → float → double
规则:
- char、short参与运算,强制提升为int;
- float参与运算,强制提升为double。
2.2 强制类型转换
语法格式: (目标类型)变量 / (目标类型)(表达式)
3 运算符
3.1 算术运算符
- / % ++ –
- % 取模运算符仅支持整型,浮点数据不可使用;
- ++ 、 – 只能作用于变量;
- i++ :先取值,后自增; ++i :先自增,后取值。
3.2 赋值运算符
= += -= *= /= %=
左值:能够放置在等号左侧,只有变量满足条件。
右值:变量、常量、合法表达式均可。
跨类型赋值规则:
- 浮点数据赋值给整型,直接舍弃小数部分;
- 大数据存入低位宽类型,直接截断二进制低位,结果不可预判。
3.3 逗号运算符
语法: (表达式1,表达式2,表达式3)
运算顺序从左至右依次执行,整体结果等于最右侧表达式的值。
3.4 sizeof运算符
获取变量或数据类型占用内存字节大小。
c
int a;
sizeof(int);
sizeof(a);
3.5 优先级大致顺序
括号 > 单目运算符 > 双目运算符 > 三目运算符 > 赋值运算符 > 逗号运算符
4 基础输入输出函数
头文件: <stdio.h>
- 单字符IO函数
putchar()
功能:向终端输出单个字符。
c
putchar(表达式);
规则:
- 仅支持输出单个字符;
- 参数会解析为ASCII码对应字符;
- 返回值:输出字符的ASCII码(int类型)。
示例:连续输出hello
c
#include <stdio.h>
int main(void)
{
putchar(‘h’);
putchar(‘e’);
putchar(‘l’);
putchar(‘l’);
putchar(‘o’);
putchar(‘\n’);
return 0;
}
getchar()
功能:从终端读取一个字符。
c
char ch;
ch = getchar();
- 格式化IO函数
- printf() :格式化数据输出到终端
- scanf() :从终端格式化读取数据
- 字符串IO函数
- gets() :读取字符串,存在缓冲区溢出漏洞,标准C已经废弃,禁止使用。
- puts() :输出字符串,自动追加换行符。
补充区分
- putchar / getchar :面向单个字符;
- printf / scanf :支持多种数据类型格式化读写;
- puts / gets :专门操作字符串。