六、C语言基础——深入理解C语言中的常量与变量:用法、区别及案例

常量与变量

一、常量

在整个程序中,值不会发生变化的数据。
在C语言中,常量不能被赋值,只有变量才能被赋值。

1、整型常量

整型常量:用于表示整数值,可以使用十进制、八进制、十六进制等形式表示。

例如:

int num1 = 10;       // 十进制整型常量
int num2 = 012;      // 八进制整型常量
int num3 = 0xA;      // 十六进制整型常量

2、字符型常量

字符型常量:用于表示单个字符,使用单引号(‘’)表示。

例如:

char ch = 'A';     // 字符型常量

3、浮点型常量

浮点型常量:用于表示实数值,包括单精度浮点数和双精度浮点数。

(1)、一般形式:

例如:

float num4 = 3.14;  // 单精度浮点型常量
double num5 = 2.718; // 双精度浮点型常量

(2)、指数形式:
[+/-]M.N<e/E>[+/-]T

  • M:整数部分(1位数)
  • N:小数部分

例如:

3.145e+10 == 3.145 * 10^10		
-1.23e-8 = -1.23 * 10^(-8)
345.12 == 3.4512 * 10^2 == +3.4512e+2

4、字符串常量

(1)、字符串常量:用于表示多个字符组成的字符串,使用双引号(“”)表示。
(2)、字符串特点:任意一个字符串的末尾都有一个隐藏字符–空字符(‘\0’)
(3)、空字符是字符串的结束标志

例如:

char str1[] = "Hello"; // 字符串常量
//"Hello" == 'H','e','l','l','o','\0'

5、标识符常量

(1)、标识符常量:通过#define指令定义的常量,使用时直接替换为对应的值。
(2)、定义的一般形式:#define 标识符 常量表达式 ---- 宏定义

例如:

#define N 100   // 标识符常量
#define STR "hello world"

int num6 = N; // 使用标识符常量
//N == 100
printf(STR);
//STR == hello world

注意:常量表达式最终结果可以是整型常量、字符型常量、浮点型常量、字符串常量

二、变量

变量在程序中,值可以发生变化的数据。
变量在使用之间必须事先定义声明。

1、变量的定义

变量的定义在使用之前,需要先定义变量,包括变量的类型和名称。

例如:

int num7;     // 定义整型变量
char ch2;    // 定义字符型变量
float num8;  // 定义单精度浮点型变量

2、变量定义的一般形式

(1)、变量定义的一般形式:包括类型说明符和变量名,可以使用关键字、标识符和运算符。
(2)、<存储类型> <数据类型> 变量名;

存储类型:auto、register、extern、static

auto

(1)、auto(自动存储类型):
内存空间由系统自动分配和回收,关键字auto可省略。
适用于在函数中定义的局部变量。

auto int a;//等价于 int a;
register

(2)、register(寄存器存储类型):
声明为寄存器存储类型的变量会加载到寄存器中运行,提高程序运行效率。
注意:不一定能成功申请到寄存器。
适用于对访问速度要求较高的变量。

extern

(3)、extern(外部调用存储类型):
用于在一个文件中调用另一个文件中的非静态全局变量。适用于多个文件之间共享数据的情况。

static

(4)、static(静态存储类型):
用于修饰局部变量和全局变量,限制其作用域或延长其生命周期。
适用于需要在函数调用间保持数据持久性的变量。

数据类型可以是基本数据类型(如int、char、short、float等)或用户自定义数据类型(如数组、结构体等)。

例如:

3、变量的初始化

初始化:在定义的同时赋初值

int a = 10; 
int a = 10, b, c = 20; // int a = 10, int b, int c = 20

4、变量的赋值

int a = 10;
a = 20;

注意:赋值运算时,赋值符号两边的数据类型要一致

5、局部变量和全局变量

局部变量

(1)、局部变量:定义在函数或代码块内部的变量。
(2)、特点:

  • 1、内存空间由系统自动分配和回收。
  • 2、生命周期:限于函数或代码块内部。
  • 3、作用域:在函数或代码块内。

(3)、局部变量在其所在的函数或代码块内可以被访问和修改,但在外部无法访问。
(4)、局部变量的作用范围通常较小,仅在其定义的函数或代码块内有效,不会与其他函数或代码块中的同名变量产生冲突。

全局变量

(1)、全局变量:定义在函数外部或在多个函数之间共享的变量。
(2)、特点:

  • 1、内存空间在程序运行期间一直存在
  • 2、生命周期延长到整个程序运行期间
  • 3、作用域在整个程序内部,可以被任何函数访问和修改。
  • 4、如果一个全局变量定义之后没有赋值,该全局变量的初始值默认为0

全局变量在不同函数之间共享数据,但也因此可能导致数据被多个函数同时修改而产生错误。因此,全局变量的使用应当谨慎,避免滥用。

三、 强制数据类型转换

1、显示类型转换

1、显示类型转换:通过某种方法或者格式强制进行转换

一般用于将高类型转换为低类型。

一般形式:(转换的新类型)表达式;

例:

int a = 3;
float b = 4.12;
a = (int)b;  //将b的类型暂时转换为int给a赋值,取整而不是四舍五入
//a == 4

注意:强制类型转换不会修改原本数据的值

2、隐式类型转换

2、隐式类型转换:自动转换
用于将低类型转换为高类型,编译器会自动进行转换。

例:

int a = 3;
float b = a; // 将a的值自动转换为float类型赋值给b
// b == 3.0

需要注意的是,隐式类型转换可能会导致数据精度丢失或错误的结果,因此在进行类型转换时应当谨慎使用,确保转换结果符合预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小羊客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值