1. dataclass型
1.1 Clanguage dataclass型classification
Clanguage dataclass型可以分 for 以 under 几class:
- basicdataclass型: 整型, 浮点型, 字符型, boolean型
- constructdataclass型: array, structure体, 联合体, 枚举
- 指针class型: various types of指针
- 空class型: void
1.2 basicdataclass型
1.2.1 整型
整型用于表示整数, Clanguageproviding了 many 种整型class型, 以适应不同范围 整数值:
| class型 | 占用空间 | 取值范围 |
|---|---|---|
| char | 1字节 | -128 to 127 |
| short | 2字节 | -32768 to 32767 |
| int | 4字节 | -2147483648 to 2147483647 |
| long | 4 or 8字节 | 取决于编译器 |
| long long | 8字节 | -9223372036854775808 to 9223372036854775807 |
1.2.2 浮点型
浮点型用于表示带 has small 数部分 数值:
| class型 | 占用空间 | 精度 |
|---|---|---|
| float | 4字节 | 约6-7位 small 数 |
| double | 8字节 | 约15-17位 small 数 |
| long double | 8 or 16字节 | 取决于编译器 |
1.2.3 字符型
字符型用于表示单个字符, in Clanguagein, 字符型practical on is a 特殊 整型, 它store is 字符 ASCII码值:
#include <stdio.h>
int main() {
char ch = 'A';
printf("字符: %c\n", ch);
printf("ASCII码: %d\n", ch);
return 0;
}
1.2.4 boolean型
C99标准引入了boolean型, 需要package含头file <stdbool.h>:
#include <stdio.h>
#include <stdbool.h>
int main() {
bool flag = true;
printf("boolean值: %d\n", flag); // 输出 1
flag = false;
printf("boolean值: %d\n", flag); // 输出 0
return 0;
}
2. 常量 and variable
2.1 常量
常量 is 指 in 程序run过程in其值不能改变 量. Clanguagein 常量including:
2.1.1 字面常量
- 整型常量: such as 100, 0x1A (十六进制) , 077 (八进制)
- 浮点常量: such as 3.14, 2.5e-3 (科学计数法)
- 字符常量: such as 'A', '\n' (转义字符)
- string常量: such as "Hello World"
2.1.2 符号常量
using #define 预processing指令定义 常量:
#include <stdio.h>
#define PI 3.14159
#define MAX_AGE 100
int main() {
printf("PI 值: %f\n", PI);
printf("最 big 年龄: %d\n", MAX_AGE);
return 0;
}
2.1.3 const常量
using const 关键字定义 常量:
#include <stdio.h>
int main() {
const float pi = 3.14159;
const int max_age = 100;
printf("PI 值: %f\n", pi);
printf("最 big 年龄: %d\n", max_age);
// pi = 3.14; // error: 不能modifyconst常量 值
return 0;
}
2.2 variable
variable is 指 in 程序run过程in其值可以改变 量. variable in using before 必须先声明, 声明variable时需要指定其dataclass型.
2.2.1 variable声明 and 初始化
#include <stdio.h>
int main() {
// 声明variable
int age;
float salary;
char grade;
// 初始化variable
age = 25;
salary = 5000.50;
grade = 'A';
// 声明并初始化variable
int count = 0;
float average = 85.5;
// 输出variable 值
printf("年龄: %d\n", age);
printf("工资: %.2f\n", salary);
printf("etc.级: %c\n", grade);
printf("计数: %d\n", count);
printf("平均分: %.1f\n", average);
return 0;
}
2.2.2 variable 作用域
variable 作用域 is 指variable in 程序in可以被访问 范围. Clanguagein variable作用域including:
- 局部variable: in function in 部声明 variable, 只 in function in 部 has 效
- 全局variable: in function out 部声明 variable, in 整个程序in都 has 效
#include <stdio.h>
// 全局variable
int global_var = 100;
void function() {
// 局部variable
int local_var = 200;
printf("局部variable: %d\n", local_var);
printf("全局variable: %d\n", global_var);
}
int main() {
printf("全局variable: %d\n", global_var);
function();
// printf("局部variable: %d\n", local_var); // error: local_var in 此作用域in未声明
return 0;
}
3. 运算符
3.1 算术运算符
算术运算符用于执行basic 算术运算:
| 运算符 | describes | example |
|---|---|---|
| + | 加法 | a + b |
| - | 减法 | a - b |
| * | 乘法 | a * b |
| / | 除法 | a / b |
| % | 取余 (模运算) | a % b |
| ++ | 自增 | a++ or ++a |
| -- | 自减 | a-- or --a |
#include <stdio.h>
int main() {
int a = 10, b = 3;
printf("a + b = %d\n", a + b);
printf("a - b = %d\n", a - b);
printf("a * b = %d\n", a * b);
printf("a / b = %d\n", a / b); // 整数除法, 结果 for 3
printf("a %% b = %d\n", a % b); // 取余, 结果 for 1
// 自增运算符
int c = 5;
printf("c = %d\n", c); // 输出 5
printf("c++ = %d\n", c++); // 输出 5, 然 after c 变 for 6
printf("c = %d\n", c); // 输出 6
printf("++c = %d\n", ++c); // c 变 for 7, 然 after 输出 7
return 0;
}
3.2 relationships运算符
relationships运算符用于比较两个值 big small , 返回boolean值 (1表示真, 0表示fake) :
| 运算符 | describes | example |
|---|---|---|
| == | etc.于 | a == b |
| != | 不etc.于 | a != b |
| > | big 于 | a > b |
| < | small 于 | a < b |
| >= | big 于etc.于 | a >= b |
| <= | small 于etc.于 | a <= b |
3.3 逻辑运算符
逻辑运算符用于组合 many 个条件:
| 运算符 | describes | example |
|---|---|---|
| && | 逻辑 and | a && b |
| || | 逻辑 or | a || b |
| ! | 逻辑非 | !a |
3.4 赋值运算符
赋值运算符用于给variable赋值:
| 运算符 | describes | example | etc.价于 |
|---|---|---|---|
| = | simple 赋值 | a = b | a = b |
| += | 加 after 赋值 | a += b | a = a + b |
| -= | 减 after 赋值 | a -= b | a = a - b |
| *= | 乘 after 赋值 | a *= b | a = a * b |
| /= | 除 after 赋值 | a /= b | a = a / b |
| %= | 取余 after 赋值 | a %= b | a = a % b |
3.5 条件运算符
条件运算符 (三目运算符) is Clanguagein唯一 一个三目运算符:
#include <stdio.h>
int main() {
int a = 10, b = 20;
int max;
// 条件运算符: 条件 ? 表达式1 : 表达式2
max = (a > b) ? a : b;
printf("最 big 值: %d\n", max);
return 0;
}
3.6 运算符priority
Clanguagein运算符 priority from high to low 排列such as under :
- 括号 () [] -> .
- 一元运算符 ++ -- ! ~ + - * & sizeof
- 算术运算符 * / % + -
- 移位运算符 << >>
- relationships运算符 < <= > >=
- 相etc.运算符 == !=
- 位运算符 & ^ |
- 逻辑运算符 && ||
- 条件运算符 ? :
- 赋值运算符 = += -= *= /= %= <<= >>= &= ^= |=
- 逗号运算符 ,
实践case: 计算器程序
writing一个 simple 计算器程序, implementation两个数 加, 减, 乘, 除运算.
requirementsanalysis
- 提示user输入两个operation数
- 提示user选择运算符
- 根据选择 运算符执行相应 运算
- 输出运算结果
referencecode
#include <stdio.h>
int main() {
float num1, num2, result;
char operator;
// 提示user输入两个operation数
printf("请输入第一个数: ");
scanf("%f", &num1);
printf("请输入第二个数: ");
scanf("%f", &num2);
// 提示user选择运算符
printf("请选择运算符 (+, -, *, /): ");
scanf(" %c", &operator); // 注意 before 面 空格, 用于跳过换行符
// 根据选择 运算符执行相应 运算
switch(operator) {
case '+':
result = num1 + num2;
printf("%.2f + %.2f = %.2f\n", num1, num2, result);
break;
case '-':
result = num1 - num2;
printf("%.2f - %.2f = %.2f\n", num1, num2, result);
break;
case '*':
result = num1 * num2;
printf("%.2f * %.2f = %.2f\n", num1, num2, result);
break;
case '/':
if(num2 != 0) {
result = num1 / num2;
printf("%.2f / %.2f = %.2f\n", num1, num2, result);
} else {
printf("error: 除数不能 for 零!\n");
}
break;
default:
printf("error: 无效 运算符!\n");
}
return 0;
}
run结果
请输入第一个数: 10 请输入第二个数: 5 请选择运算符 (+, -, *, /): * 10.00 * 5.00 = 50.00
互动练习
练习1: writing一个C程序, 将摄氏度转换 for 华氏度. 公式: F = C * 9/5 + 32
练习2: writing一个C程序, 计算一个三位数 各位number之 and . 例such as, 输入123, 输出6.
练习3: writing一个C程序, 判断一个数 is 否 for 偶数.