从头开始学C语言-第二篇-占位符和变量计算与赋值
占位符
先讲一下占位符吧,一会儿输出变量的时候要用。
核心作用:在
printf(输出)、scanf(输入)等函数中,替代 变量/常量 的位置,并指定数据的 显示/读取 格式,必须与变量的类型严格匹配。
占位符的通用规则
- 语法格式: 以
%开头,后跟「格式字符」(如d/f/c),可选「修饰符」(如宽度、精度),例:%d、%.2f、%5s。 - 核心匹配: 占位符类型必须与变量类型一致(如
int用%d,float用%f),否则会出现乱码 / 错误。 - 两大场景:
printf:用占位符指定「输出格式」,语法:printf("字符串+占位符", 变量1, 变量2...);scanf:用占位符指定「输入格式」,语法:scanf("占位符", &变量1, &变量2...);(注意&取地址符,字符串除外)。
常用占位符速查表(按类型分类)
| 占位符 | 对应数据类型 | 用途 | 示例(printf) | 示例(scanf) |
|---|---|---|---|---|
%d |
int | 十进制整数 | printf(“%d”, 10); | scanf(“%d”, &a); |
%hd |
short int | 短整数 | printf(“%hd”, (short)5); | scanf(“%hd”, &b); |
%ld |
long int | 长整数 | printf(“%ld”, 123456789L); | scanf(“%ld”, &c); |
%lld |
long long int | 超长整数 | printf(“%lld”, 9876543210LL); | scanf(“%lld”, &d); |
%u |
unsigned int | 无符号十进制整数 | printf(“%u”, 100U); | scanf(“%u”, &e); |
%f |
float/double | 浮点数(printf) | printf(“%f”, 3.14f); | scanf(“%f”, &f);(仅 float) |
%lf |
double | 浮点数(scanf) | printf(“%lf”, 3.14); | scanf(“%lf”, &g);(仅 double) |
%.2f |
float/double | 保留 2 位小数的浮点数 | printf(“%.2f”, 3.1415); | - |
%c |
char | 单个字符 | printf(“%c”, ‘A’); | scanf(“%c”, &ch); |
%s |
char[]/char* | 字符串(以 \0 结尾) | printf(“%s”, “Hello”); | scanf(“%s”, str);(无需 &) |
%x/%X |
int/long | 十六进制整数(小写 / 大写) | printf(“%x”, 255);(输出 ff) | scanf(“%x”, &h); |
%o |
int/long | 八进制整数 | printf(“%o”, 8);(输出 10) | scanf(“%o”, &i); |
%p |
void* | 内存地址(十六进制) | printf(“%p”, &a); | - |
%% |
- | 输出百分号本身 | printf(“%%”);(输出 %) | - |
用法演示:匹配变量类型
1 |
|
赋值操作
赋值是计算的前提,=并非 “等于”,而是将右侧表达式的结果赋给左侧变量
基本赋值语法
| 场景 | 语法示例 | 说明 |
|---|---|---|
| 变量初始化(定义时赋值) | int a = 10; |
定义 int 型变量 a,同时赋值为 10 |
| 变量重新赋值 | a = 20; |
已定义的变量 a,覆盖原有值为 20 |
| 表达式结果赋值 | int b = a + 5; |
先计算a+5(25),再赋值给 b |
| 多变量连续赋值 | int x = y = z = 3; |
右结合性:先z=3→y=z→x=y(需先定义 y、z) |
赋值的关键规则
- 左侧必须是变量(如
10 = a;、a + b = 5;均报错,因为 10/a+b 是 “右值”,不可修改) - 赋值后变量的类型不变(如
int a = 3.8;,会自动截断小数,a 最终为 3) - 赋值表达式本身有返回值(如
int c = (a = 10);,a=10 的返回值是 10,因此 c=10)
变量计算:算术运算符
通过+、-、*、/、%对变量进行 加\减\乘\除\取模 运算,运算结果可直接赋值给变量,也可临时使用(如打印)。
| 运算符 | 作用 | 适用类型 | 关键规则 |
|---|---|---|---|
+ |
加法 | 整数 / 浮点数 | 支持正数、负数,如3 + (-5) = -2 |
- |
减法 / 取负 | 整数 / 浮点数 | 单目取负:int a = -10;;减法:5 - 8 = -3 |
* |
乘法 | 整数 / 浮点数 | 注意溢出(如int a = 100000 * 100000;可能超 int 范围) |
/ |
除法 | 整数 / 浮点数 | 整数除法:截断小数(5/2=2);浮点数除法:5.0/2=2.5 |
% |
取模(余数) | 仅整数 | 结果符号与被除数一致(7%3=1,-7%3=-1,7%-3=1) |
示例:基础算术计算与赋值
1 |
|
简化操作:复合赋值运算符
| 复合运算符 | 等价形式 | 示例 | 说明 |
|---|---|---|---|
+= |
a = a + b |
a += 5 → a=a+5 |
加法赋值 |
-= |
a = a - b |
a -= 3 → a=a-3 |
减法赋值 |
*= |
a = a * b |
a *= 2 → a=a*2 |
乘法赋值 |
/= |
a = a / b |
a /= 4 → a=a/4 |
除法赋值(整数 / 浮点数) |
%= |
a = a % b |
a %= 5 → a=a%5 |
取模赋值(仅整数) |
示例:复合赋值
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 墨深的Blog!
评论






