「这是我参与2022首次更文挑战的第9天,活动详情查看:2022首次更文挑战」
变量名的使用
变量名规则
- 由大写字母、小写字母、数字、下划线
- 不能以数字开头
- 不能是 int、return 等有特定含义的保留字
除此之外,为了让程序容易背人理解,我们应该给变量名称赋予一个实际的意义
如:
- year 表示年
- month 表示月
- weather 表示天气
变量的作用域
任何我们在程序中要使用的变量,都需要在使用前先被声明。
一个变量可以在变量声明语句之后、包裹了它的声明语句的最内一层 {} 之内被使用,它的这个可以被使用的范围被称为变量的 作用域(scope) 。
在同一作用域内不能存在重名的变量(否则在作用域内使用时就分不清指代的是哪一个变量了),如果多个变量名相同的变量的作用域如果有重叠的部分,则程序在编译时会发生“重复声明(redeclaration)”的错误。
我们可以简单的理解一个变量的 作用域(scope) 一般可以被界定为变量声明语句之后、包裹了它的声明语句的最内一层 {} 之内。
例如下图中,对于变量 alpha,图中的绿色标记了包裹了它的声明语句的最内一层 {} 所在的区域;而黄色的剪头标记出了自它声明后,它的实际作用域范围(也就是作用域)。
变量与格式化输出printf
print(打印)f(format 格式)
如果传入一个不带任何变量的字符串,那么这个格式就是一个纯粹的字符串
如果我们需要再字符串中嵌入一些变量,那么我们嵌入占位符后printf函数的第一个参数就会被视为我们需要的格式
那么我们常用的修饰变量的类型有哪些呢?相对应的用于格式化输出的占位符又有哪些呢?
| 数据类型 | 关键字 | 说明 |
|---|---|---|
| 整数型 | int | 反应及其中整数的自然长度 |
| 字符型 | char | 占1字节,可存一个字符 |
| 单精度浮点数型 | float | 用于存储单精度的实数 |
| 双精度浮点数型 | double | 用于存储双精度的实数,平时更常用 |
格式化输出
例如:
// printf中的第一个参数中有%开头的格式占位符(这里如%c%d)
//嵌入了格式化占位符后的printf函数的第一个参数就会被视为我们所需要的格式,
//后续的参数之会与格式占位符对应。
//在这里,输出时个是参数中的%c会被alpha的值替换;%d会被number的值所替换
printf("%c is %dst letter", alpha, number);
格式占位符
| 数据类型及显示 | 占位符 | 占位符来源单词首字母 | 示例数据 |
|---|---|---|---|
| 有符号整数型 | %d or %i | digit和interger | -392 |
| 字符型 | %c | character | A |
| 无符号整数型 | %u | unsigned | 392 |
| 浮点数 | %f or %F | float | 39.2 |
| 双精度浮点数 | %lf | double | 39.2000 |
| 科学计数法浮点数 | %e or %E | exponent | 3.9265e+2 |
| 实数(不现实无异议0) | %g or %G | 39.2和1.2e+02 | |
| 内存地址 | %p | pointer | b8000000 |
| 字符串 | %s | string | sample |
基本变量类型
int、 float、 double可以被修饰
- short修饰的整数型变量的存储位数会更小,响应的可存整数范围也就较小
- long修饰则会用更多的存储位数,能存在整数范围也不小于int
无符号的整数unsigned int
- unsigned可以用来修饰int,告诉计算机"这个整数不需要留出以为来存储符号,所有的位数都可以拿来存储数字"