第3章 基本语法
在这一章中,我们将详细介绍C语言的基本语法,包括注释、变量与数据类型、常量、运算符和输入输出。这些基础知识是编写C程序的基石,掌握它们将为你后续的学习打下坚实的基础。
3.1 注释
注释是代码中不被执行的部分,主要用于解释代码的功能和逻辑。C语言支持两种注释方式:
- 单行注释:使用 // 开头,注释从 // 开始到行末的所有内容。
- 多行注释:使用 /* 开始, */ 结束,可以跨越多行。
3.1.1 单行注释
#include <stdio.h>
int main() {
// 这是一个单行注释
printf("Hello, World!\n"); // 输出字符串
return 0;
}
3.1.2 多行注释
#include <stdio.h>
int main() {
/*
* 这是一个多行注释
* 可以跨越多行
*/
printf("Hello, World!\n");
return 0;
}
3.2 变量与数据类型
变量是程序中用来存储数据的标识符。C语言提供了多种数据类型,每种数据类型都有其特定的用途和大小。
3.2.1 基本数据类型
- 整型:
- int:通常占用4个字节,范围通常是-2,147,483,648到2,147,483,647。
- short:通常占用2个字节,范围通常是-32,768到32,767。
- long:通常占用4个字节,范围通常是-2,147,483,648到2,147,483,647。
- long long:通常占用8个字节,范围通常是-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
- 浮点型:
- float:通常占用4个字节,精度约为6-7位小数。
- double:通常占用8个字节,精度约为15位小数。
- long double:通常占用10个字节或更多,精度更高。
- 字符型:
- char:通常占用1个字节,用于存储单个字符。
- 布尔型:
- _Bool(C99引入):通常占用1个字节,表示真(1)或假(0)。
3.2.2 变量声明和初始化
#include <stdio.h>
int main() {
int age = 25; // 声明并初始化一个整型变量
float height = 1.75; // 声明并初始化一个浮点型变量
char grade = 'A'; // 声明并初始化一个字符型变量
_Bool is_student = 1; // 声明并初始化一个布尔型变量
printf("Age: %d\n", age);
printf("Height: %.2f\n", height);
printf("Grade: %c\n", grade);
printf("Is student: %s\n", is_student ? "Yes" : "No");
return 0;
}
3.3 常量
常量是程序中不可改变的值。C语言中定义常量的方式有两种:使用 #define 预处理器指令和使用 const 关键字。
3.3.1 使用 #define 定义常量
#include <stdio.h>
#define PI 3.14159 // 定义一个常量
int main() {
float radius = 5.0;
float area = PI * radius * radius;
printf("Area of the circle: %.2f\n", area);
return 0;
}
3.3.2 使用 const 定义常量
#include <stdio.h>
int main() {
const float PI = 3.14159; // 定义一个常量
float radius = 5.0;
float area = PI * radius * radius;
printf("Area of the circle: %.2f\n", area);
return 0;
}
3.4 运算符
C语言提供了多种运算符,用于执行各种数学和逻辑运算。
3.4.1 算术运算符
- +:加法
- -:减法
- *:乘法
- /:除法
- %:取模(求余)
#include <stdio.h>
int main() {
int a = 10;
int 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); // 整数除法
printf("a %% b = %d\n", a % b); // 取模
return 0;
}
3.4.2 关系运算符
- ==:等于
- !=:不等于
- <:小于
- <=:小于等于
- >:大于
- >=:大于等于
#include <stdio.h>
int main() {
int a = 10;
int b = 3;
printf("a == b: %s\n", a == b ? "True" : "False");
printf("a != b: %s\n", a != b ? "True" : "False");
printf("a < b: %s\n", a < b ? "True" : "False");
printf("a <= b: %s\n", a <= b ? "True" : "False");
printf("a > b: %s\n", a > b ? "True" : "False");
printf("a >= b: %s\n", a >= b ? "True" : "False");
return 0;
}
3.4.3 逻辑运算符
- &&:逻辑与
- ||:逻辑或
- !:逻辑非
#include <stdio.h>
int main() {
int a = 10;
int b = 3;
int c = 5;
printf("(a > b) && (b < c): %s\n", (a > b) && (b < c) ? "True" : "False");
printf("(a < b) || (b < c): %s\n", (a < b) || (b < c) ? "True" : "False");
printf("!(a < b): %s\n", !(a < b) ? "True" : "False");
return 0;
}
3.4.4 位运算符
- &:按位与
- |:按位或
- ^:按位异或
- ~:按位取反
- <<:左移
- >>:右移
#include <stdio.h>
int main() {
int a = 10; // 1010 in binary
int b = 3; // 0011 in binary
printf("a & b = %d\n", a & b); // 0010
printf("a | b = %d\n", a | b); // 1011
printf("a ^ b = %d\n", a ^ b); // 1001
printf("~a = %d\n", ~a); // 11111111111111111111111111110101 (in two's complement)
printf("a << 1 = %d\n", a << 1); // 10100
printf("a >> 1 = %d\n", a >> 1); // 0101
return 0;
}
3.5 输入输出
C语言提供了标准库函数来进行输入和输出操作。常用的输入输出函数包括 printf 和 scanf。
3.5.1 输出
printf 函数用于将格式化的字符串输出到标准输出(通常是屏幕)。
#include <stdio.h>
int main() {
int age = 25;
float height = 1.75;
char grade = 'A';
printf("Age: %d\n", age);
printf("Height: %.2f\n", height);
printf("Grade: %c\n", grade);
return 0;
}
3.5.2 输入
scanf 函数用于从标准输入(通常是键盘)读取格式化的输入。
#include <stdio.h>
int main() {
int age;
float height;
char grade;
printf("Enter your age: ");
scanf("%d", &age);
printf("Enter your height: ");
scanf("%f", &height);
printf("Enter your grade: ");
scanf(" %c", &grade); // 注意前面的空格,用于忽略前导空白字符
printf("Age: %d\n", age);
printf("Height: %.2f\n", height);
printf("Grade: %c\n", grade);
return 0;
}
3.6 小结
通过本章的学习,我们掌握了C语言的基本语法,包括注释、变量与数据类型、常量、运算符和输入输出。这些基础知识是编写C程序的基石,掌握它们将为你后续的学习打下坚实的基础。