从零开始学嵌入式技术之C语言03:变量与常量

一:变量

        变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。

(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定义常量需指定数据类型,会进行类型检查,类型安全性更强。

        

        本章的内容就到这里。

        关注我一起成为嵌入式大佬。

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值