C语言-002
一、变量定义与命名规则
(一)变量定义
- 一般形式:
<类型名称> <变量名称>;- 示例:
int price;int amount;
- 示例:
- 多个变量同时定义:
<类型名称> <变量1>, <变量2>;- 示例:
int price, amount;
- 示例:
- 变量初始化:定义变量时直接赋予初始值
- 单个变量初始化:
<类型名称> <变量名称> = <初始值>; - 示例:
int price = 0;int amount = 100; - 多个变量组合初始化:可单独为每个变量赋值
- 示例:
int price = 0, amount = 100;
- 单个变量初始化:
(二)变量命名规则(标识符规则)
- 标识符由字母、数字和下划线组成
- 数字不能出现在标识符的第一个位置
- 不能使用 C 语言的关键字(保留字)作为标识符
(三)C 语言保留字
auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while、inline、restrict
二、变量类型与数据类型
(一)变量类型核心规则
- C 语言是强类型语言,所有变量使用前必须定义或声明
- 变量必须具有确定的数据类型,只能存放对应类型的数据
- 程序运行过程中不能改变变量的类型
(二)基本数据类型
| 数据类型 | 描述 | 输入格式符 | 输出格式符 | 示例 |
|---|---|---|---|---|
| int | 整数类型,用于存储整数,运算速度快、占用空间小 | %d | %d | int age = 20; |
| double | 双精度浮点数,用于存储带小数点的数值(推荐使用) | %f | %f | double weight = 62.5; |
| float | 单精度浮点数,用于存储带小数点的数值 | %f | %f | float height = 1.75f; |
(三)整数类型特性
- 不能表达小数部分,整数与整数运算结果仍为整数(如
10 / 3 = 3) - 日常大量计算场景适用,实用性强
(四)浮点数类型特性
- 浮点数(浮点型):指带小数点的数值,小数点可 "浮动",是计算机表达非整数的主要方式
- 与整数混合运算时,C 语言会先将整数转换为浮点数,再进行浮点运算
- 注意:
10(整数)和10.0(浮点数)在 C 语言中是完全不同的数据类型
三、常量
(一)直接量(字面常量)
程序中直接书写的固定不变的数,如 100、3.14 等,示例:int change = 100 - price; 中的 100。
(二)const 修饰的常量
- 定义格式:
const <类型名称> <常量名称> = <初始值>;- 示例:
const int AMOUNT = 100;
- 示例:
- 特性:
-
const是修饰符,给变量添加 "不可修改" 属性 - 常量初始化后不能再修改,若试图修改会被编译器报错
- 推荐使用:增强程序可读性和可维护性
-
四、输入与输出
(一)输入函数 scanf
- 读取整数:
scanf("%d", &变量名);- 注意:变量名前必须加取地址符
&,示例:scanf("%d", &price);
- 注意:变量名前必须加取地址符
- 读取浮点数:
scanf("%f", &变量名);- 示例:
scanf("%f", &weight);
- 示例:
(二)输出函数 printf
- 输出整数:
printf("%d", 变量名/表达式);- 示例:
printf("找您%d元。n", change);
- 示例:
- 输出浮点数:
printf("%f", 变量名/表达式);- 示例:
printf("体重为%fkgn", weight);
- 示例:
(三)变量定义位置差异(ANSI C 与 C99)
| 标准 | 变量定义位置 | 示例 |
|---|---|---|
| ANSI C | 只能在代码开头定义 | int price = 0; int change = 0; scanf("%d", &price); change = 100 - price; |
| C99 | 可在代码中间按需定义 | int price = 0; scanf("%d", &price); int change = 100 - price; |
五、表达式与运算符
(一)表达式
- 定义:由一系列运算符和算子组合而成,用于计算一个值
- 示例:
amount = X * (1 + 0.033) * (1 + 0.033) * (1 + 0.033);total = 57;count = count + 1;value = (min / 2) * lastValue;
(二)基本概念
- 运算符:进行运算的动作,如
+(加)、-(减)、*(乘)等 - 算子:参与运算的值,可为常数、变量或方法返回值
(三)运算符优先级与结合关系
| 优先级 | 运算符 | 运算 | 结合关系 | 示例 |
|---|---|---|---|---|
| 1 | + | 单目不变 | 自右向左 | a * +b |
| 1 | – | 单目取负 | 自右向左 | a * -b |
| 2 | * | 乘 | 自左向右 | a * b |
| 2 | / | 除 | 自左向右 | a / b |
| 2 | % | 取余 | 自左向右 | a % b |
| 3 | + | 加 | 自左向右 | a + b |
| 3 | – | 减 | 自左向右 | a - b |
| 4 | = | 赋值 | 自右向左 | a = b |
(四)特殊运算符
- 赋值运算符
- 赋值是运算,有返回值(返回被赋予的值)
- 链式赋值:
a = b = 6等价于a = (b = 6),结果a和b均为 6
- 复合赋值运算符
- 由算术运算符(
+、-、*、/、%)与赋值运算符=组合而成 - 包括:
+=、-=、*=、/=、%= - 示例:
total += 5;等价于total = total + 5; - 注意:两个运算符中间不能有空格
- 由算术运算符(
- 递增 / 递减运算符(
++、--)- 单目运算符,算子必须是变量
- 作用:给变量加 1(
++)或减 1(--) - 等价关系:
-
count++;等价于count += 1;和count = count + 1; -
count--;等价于count -= 1;和count = count - 1;
-
- 前缀与后缀区别:
| 运算 | 表达式 | 表达式的值 |
|---|---|---|
| 给 count 加 1 | count++(后缀) | count 原来的值 |
| 给 count 加 1 | ++count(前缀) | count+1 以后的值 |
| 给 count 减 1 | count–(后缀) | count 原来的值 |
| 给 count 减 1 | –count(前缀) | count-1 以后的值 |
#include <stdio.h>
int main()
{
int price = 0;
printf("请输入金额(元)");
scanf("%d",&price);
int change = 100 – price;
printf("找您%d元n",change);
return 0;
}
#include <stdio.h>
int main()
{
int a;
int b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
printf("%d + %d = %dn",a,b,a+b);
return 0;
}
#include <stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,"
"请输入"5 7"表示五英寸七英尺");
double foot;
double inch;
scanf("%lf %lf",&foot,&inch);
printf("身高是%f米。n",
((foot + inch /12)*0.3048));
return 0;
}
#include <stdio.h>
int main()
{
int hour1, minute1;
int hour2, minute2;
scanf("%d %d", &hour1, &minute1);
scanf("%d %d", &hour2, &minute2);
int t1 = hour1 * 60 + minute1;
int t2 = hour2 * 60 + minute2;
int t = t2-t1;
printf("时间差是%d小时%d分。",t/60,t%60);
return 0;
}
#include <stdio.h>
int main()
{
int a=5;
int b=6;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%dn",a,b);
return 0;
}