一:变量
变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。
(1)概念:
1. 变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。
2.通过变量名,可以引用这块内存区域,获取里面存储的值。
3.变量的构成包含三个要素:数据类型、变量名、存储的值。
(2)变量的声明和使用
1。变量必须先声明,后使用。
2.可以先声明变量再赋值,也可以在声明变量的同时进行赋值。
3.变量的值可以在同一类型范围内不断变化。
#include <stdio.h>
int main()
{
// 声明一个整型变量,取名为 a
int a;
// 对变量 a 进行赋值
a = 100;
// 声明一个整型变量,取名为 b,并直接赋值
int b = 200;
// 修改变量 b 的值, 将变量 a 的值赋值给 b
b = a;
// 同时声明多个整型变量并赋值
int c1 = 10, c2 = 20, c3 = 30;
return 0;
}
(3)输出变量
printf 的标准含义是格式化输出文本,printf 的名称来源于 "print formatted"(格式化打印)的缩写,标准语法规则如下:
printf("a=%d \n", a);
1.格式化字符串是用双引号括起来的一个字符串,里面包括格式占位符和普通字符。
2. 格式占位符,也叫格式声明符,由“%”和格式字符组成,作用是将输出的数据转换为指定的格式后输出,这里“%d”表示整数,更多的格式占位符后续会进行讲解。
3.输出列表是程序需要输出的一些数据,可以是常量、变量或表达式,与格式占位符一一对应。
#include <stdio.h>
int main()
{
// 声明一个整型变量,取名为 a
int a;
// 对变量 a 进行赋值
a = 100;
// 声明一个整型变量,取名为 b,并直接赋值
int b = 200;
// 输出变量的值
printf("a=%d \n", a); // 使用输出语句,把变量a 值输出, %d 表示输出的形式为整数
printf("b=%d \n", b); // 使用输出语句,把变量b 值输出, %d 表示输出的形式为整数
// 修改变量 b 的值, 将变量 a 的值赋值给 b
b = a;
// 输出变量的值
printf("b=%d \n", b); // 使用输出语句,把变量b 值输出, %d 表示输出的形式为整数
// 同时声明多个整型变量并赋值
int c1 = 10, c2 = 20, c3 = 30;
printf("%d %d %d", c1, c2, c3); // 10 20 30
return 0;
}
(4)输入数据赋值给变量
scanf主要用于从标准输入(通常是键盘)读取数据并将其存储到指定的变量中(变量需要提前声明),同printf一样,位于头文件 <stdio.h> 中。
#include <stdio.h>
int main()
{
int num;
printf("Please Input A Number: ");
scanf("%d", &num); // 从标准输入读取整数,并将其存储到变量 num 中
printf("Your Number Is: %d\n", num);
int num1, num2, num3;
printf("PLeaase Input Three Number: ");
scanf("%d %d %d", &num1, &num2, &num3); // 从标准输入读取3个整数,使用空格分隔,并将分别将其存储到变量 num1、num2、num31 中
printf("Numbers: %d, %d, %d", num1, num2, num3);
return 0;
}
需要注意的是,scanf中,变量名前面需要添加 & 符号,该符号称为取地址符。与printf相同,scanf也可以通过不同格式占位符为不同类型的变量获取值。
(5)标识符命名规范
C语言中变量、函数、数组名、结构体等要素命名时使用的字符序列,称为标识符。
1.只能由小写或大写英文字母,0-9 或 _ 组成。
2.不能以数字开头。
3.不可以是关键字。
4.标识符具有长度限制,不同编译器和平台会有所不同,一般限制在63个字符内。
5.严格区分大小写字母。比如:Hello、hello是不同的标识符。
例题:
【选择题】下面哪个是合法的C语言标识符?
A. 123var
B. my-variable
C. _myVar
D. $number
【答案】C
【解析】 合法标识符必须以字母或下划线开头,后续可以包含字母、数字和下划线。选项C "_myVar" 符合这个规则,而其他选项不符合。
建议:
1.为了提高阅读性,使用有意义的单词,见名知意,如:sum,name,max,year等。
2.使用下划线连接多个单词组成的标识符,如:max_classes_per_student。
3.多个单词组成的标识符,除了使用下划线连接,也可以使用小驼峰命名法,除第一个单词外,后续单词的首字母大写,如 myVariableName、maxClassesPerStudent。
4.不要出现仅靠大小写区分不同的标识符,如:name、Name容易混淆。
5.系统内部使用了一些下划线开头的标识符,比如,C99标准添加的类型 `_Bool`,为防止冲突,建议开发者尽量避免使用下划线开头的标识符。
(6)关键字
二:常量
程序运行时,其值不能改变的量,即为常量。
字面量常量,直接使用的常量,不需要定义或声明,包括整数常量、浮点数常量、字符常量。
标识符常量,使用标识符作为常量名,包括 #define 定义的标识符常量和const 关键字定义的标识符常量以及枚举常量。
字面量常量不需要定义或声明,我们主要学习如何定义标识符常量,习惯上常量名使用大写,方便与变量区分。
(1)使用 #define 定义常量
#define 来定义常量,也叫作宏定义,就是用一个标识符来表示一个常量值,如果在后面的代码中出现了该标识符,那么编译时就全部替换成指定的常量值,即用宏替换所有宏名,简称宏替换。
#define 常量名 常量值
!!!不要以分号结尾,如有分号,分号会成为常量值的一部分。#define 必须写在 main 函数的外面(有些编译器的扩展允许 #define 写在 main 函数里,但我们强烈不建议这么做)。
#include <stdio.h>
#define PI 3.14 // 定义常量 PI,常量值 3.14
int main()
{
double area;
double r = 1.2;
area = PI * r * r;
printf("面积 : %.2f", area);
return 0;
}
(2)const 关键字
C99标准新增,这种方式跟定义一个变量是一样的,只需要在变量的数据类型前再加上一个const关键字。
跟使用 #define定义宏常量相比,const定义的常量有详细的数据类型,而且会在编译阶段进行安全检查,在运行时才完成替换,所以会更加安全和方便。
const 数据类型 常量名 = 常量值;
#include <stdio.h>
const double PI = 3.14; // const 定义常量时,需要加分号
int main()
{
double area;
double r = 1.2;
area = PI * r * r;
printf("面积 : %.2f", area);
return 0;
}
(3)#define定义常量和const定义常量的区别
1.执行时机:#define是预处理指令,在编译之前执行;const是关键字,在编译过程中执行。
2.类型检查:#define定义常量不用指定类型,不进行类型检查,只是简单地文本替换;const定义常量需指定数据类型,会进行类型检查,类型安全性更强。
本章的内容就到这里。
关注我一起成为嵌入式大佬。