C语言 详谈变量和常量

第二讲、C语言的常量和变量 1.指数位全为0,这时浮点数的指数等于1-127(或者1-1023),尾数部分不再加上第一位的1,而是还原为0.xxxxxx的小数。在计算器中,所有数值的取值范围受限于机器所能表示的范围,不同的计算机软件系统对数据的存储有具体的规定。不同的差别就在于采用不同位数的二进制编码方式,占用不同的存储空间,就会有不同的数据类型范围。如:0X2A(十进制为42)、0xA0(十进制为160)、0XFFFF(十进制为65535)字符常量占一个字节的内存空间。整常量:前缀为0X或0x,其数码取值为0~9,A~F或a~f。 阅读详情

目录

前言

变量和常量

变量

C语言中定义变量

变量的声明和定义

其他语言定义变量

C语言中提供的数据类型

整形家族

小数类型(浮点数类型)

自定义类型

指针类型

C语言中变量所占的大小

局部变量和全局变量

变量的生命周期

常量

使用 #define 宏定义 来定义

使用 const 关键字来定义

两者的区别 和 优劣

小结

番外

注释

Linux 进程的虚拟地址空间分布


前言

在上一节中, 我们写了第一个C语言程序, 在屏幕上输出字符串"Hello World!",  这有什么意义呢? 我认为其最重要的意义是: 我们能让计算机帮助我们做事情了, 虽然仅仅是在黑框框中显示一个字符串. 在这一节中, 我们就开始聊聊编程中的另一个小重点 ---- 变量和常量 ~

变量和常量

变量

什么是变量呢? 我们先顾名思义, 变量, 就是一个变化的量, 或者说可以变化的量, 那么变量到底是什么呢? 我们以一个场景来说, 植物大战僵尸中的植物的血量, 僵尸的血量,当前的阳光的数量, 我们在收集到阳光的时候, 当前的阳光的数量就会增加, 当我们的植物攻击到僵尸, 或者僵尸攻击到植物的时候, 僵尸的血量或者植物的血量就会降低, 所以我们说, 在我们的程序运行的过程中, 变化的量就是变量~

C语言中定义变量

变量的声明和定义

在C/C++语言中:

我们使用 变量类型 变量名; 这样的方式来声明一个变量.

我们使用 变量类型 变量名 = 初始值; 这样的方式来定义并且初始化一个变量.

C语言中呢~, 变量在使用之前必须定义, 如果编译器没有发现变量的定义, 会将从上向下的第一个变量的声明转化成变量的定义, 但是初始值为随机值(这一点随不同的编译器而定, 因为C语言标准没有规定)

#include <stdio.h>

int main()
{
    int Hp = 100;
    printf("Hp = %d\n", Hp);

    Hp = Hp - 10;
    printf("Hp = %d\n", Hp);
    return 0;
}

其他语言定义变量

这里的其他语言, 我们就简单的以Golang语言来说, 因为Golang语言之父, 就是大名鼎鼎的C语言之父, 来自Google, 但是这里我们还是以C语言位置, 其他语言就提一下就好, 让大家有一些其他认识.

package main

func main() {
    var Hp int = 100

    age := 20 // 编译器根据初始值自定义类型, 但是自定义类型不能使用这样的方式, 像string
}

C语言中提供的数据类型

C语言中, 只提供了很少的类型, 这也是C语言很容易入门, 难以精通的原因之一, 因为很多复杂的类型需要程序员自己定义, 

C语言中提供了以下类型: 

整形家族

int 整形

char 字符类型, 其中存储的是ASCII码, 也属于整形的一种, 后边详细说

short 短整形

long 长整型

long long 长长整型?

小数类型(浮点数类型)

这里为什么是浮点类型呢? 因为小数可以使用科学计数法来记录, 所以也叫做浮点类型

folat 单精度浮点型

double 双精度浮点型

自定义类型

这个自定义类型, 我们先说说它有哪些? 其他的我们以后再说, 这里说感觉有点点早~

struct 结构体类型, 像后期学习的 socket 类型, task_struct 类型, 本质都是一个结构体

enmu 枚举类型, 像一些可以枚举的常量, 就可以使用枚举类型来定义

union 联合体类型, 像在内存空间比较紧张的时候, 往往会使用联合体类型, 让多个变量占用同一部分空间, 以后详说 

指针类型

这个C语言中也提供了, 并且是C语言的精髓, 这里说的说说不清, 下一次

C语言中变量所占的大小

在C语言中, 使用sizeof关键字来计算一个类型, 或者一个变量

这里我们说一下, 为什么 long 类型的大小和 int 类型的大小是一样的, 因为C语言标准之规定了 long 类型是大于等于 int 类型的, 然而 int 类型是占 4个字节, 不同的编译器有不同的实现方式, 所以在VS2019中, long 类型的大小是4个字节

float 类型 和 double 类型, 大小的主要区别在于 存储小数的精度是不同的, 因为在计算机中根据IEEE的标准来说, 小数是没有办法在计算机中进行精确的表示的, 这样就出现了精度的问题!

自定义类型所占空间大小我们以后再说~~

指针类型的变量中存储的一个变量的内存地址空间的编号, 所以他的大小是和机器的大小是相关的, 在32位下, 大小是32个bit位, 就是4个字节, 64位下是64个bit位, 也就是8个字节

局部变量和全局变量

定义在 { } 花括号中的变量都是局部变量, { } 花括号之外的变量是 全局变量, 全局变量和局部变量在内存中的位置是不一样的

这里的 { } 花括号, 可以是日后的 if { } while { } for { } 等等

变量的生命周期

全局变量的声明周期是整个程序执行过程中都是有效的, 但是局部变量出了定义自己的 { } 花括号就不再有效了

我们可以看到, 在代码执行到 定义 num 的 { } 花括号之后, num就不能再使用了! 但是全局变量 GlobalNum还是可以使用的.

数据类型的转化

隐式类型转换

浮点数转成整形 会向下取整, 整形转化为浮点型会在后面加上 .0 

整形转化成短整型 会截断 损失精度.

强制类型转换

在需要转换的类型前面写小括号, 小括号里面协商要转化的类型

float c = 3.15;

int d = (float)c;

类型的转化, 必然是伴随着精度丢失的, 所以在使用类型转化的时候还是要小心一些~~


常量

常量, 顾名思义就是不能变化的量

C语言中定义常量的方式:

使用 #define 宏定义 来定义

使用 const 关键字来定义

两者的区别 和 优劣

#define 定义的宏 是通过替换的方式, 是没有数据类型的, 也就是说无论是整形, 浮点数类型都是可以被替换的, 这样就没有了类型的限定, 相较于const 变量类型 定义的变量来说, 就不是很安全

#define 不仅仅可以定义宏常量, 还可以定义宏函数, 想一些简单的宏函数, 我们就可以使用宏来定义, 有点C++中 inline 的意思

#define 定义的宏 是在编译四步骤中的预处理阶段被替换了, 那么我们在调试的时候就没有办法再看到NUM这样常量名称了.

小结

这一节中我们说了什么是常量和变量, 常量和变量的定义方式, , 为我们日后的开发又奠定了一个基础!

番外

注释

单行注释  //

多行注释 /**/

注释的作用了让我们看到之后, 可以明了的知道我们这一段代码干了什么, 方便过了很久之后的我们自己来看, 也方便和我们协同开发的人来看


如论是常量还是变量, 在C语言中, 都是可以通过指针来改变的, 但是这里我们还没有详细说到指针变量, 就日后再说叭. 这里我们主要说说变量在内存中是什么样的?

Linux 进程的虚拟地址空间分布

变量通常是在 stack 栈空间(栈段)中

malloc 申请的指针变量所指向的空间 是在 Heap 堆空间(堆段)中

定义了并且初始化不为0常量通常是在 .rodata段中, 只读数据段

定义了但是没有初始化或者初始化为0的常量通常是在 .bss 段中 未初始化数据段

代码通常是在 .text 段中, 代码段

C语言中的变量和常量是什么,以及它们的区别 例如,在循环中,我们可能使用一个变量来计数循环的迭代次数,或者作为索引来访问数组的元素。语言中一种特殊的变量类型,它存储的是另一个变量的内存地址。通过指针,我们可以直接访问和操作内存中的数据,这在处理复杂的数据结构、动态内存分配以及实现一些高级功能时非常有用。变量是用于存储数据值的内存位置。变量的应用场景在编程中非常广泛,几乎在任何需要存储或操作数据的程序中都会使用到变量。语言中,变量和常量是两种不同类型的存储单元,它们在程序执行过程中起着不同的作用。:变量的值可以改变,而常量的值在初始化后就不能改变。 阅读详情

相关推荐

C语言中的变量与常量

变量与常量 1.变量与常量   在整个程序的运行过程中,没有变化且不能变化的,我们称之为常量。在程序运行期间,可能会改变或者被赋值的,我们称之为变量。 2.声明一个变量   在前面的几章中,我们已经看过如何声明一个变量了。 short s; int n; long l; float f; double d;   声明变量的公式:类型 + 标识符 + 封号   即可声明一个变量。   必须先声明变量后,才能使用变量。 正确, 变量使用前被声明了。 // 正确 #include <stdio.h&gt

小杰码匠 2512

【C语言】变量和常量

使用#define预处理器: #define 可以在程序中定义一个常量,它在编译时会被替换为其对应的值。使用const关键字:const 关键字用于声明一个只读变量,即该变量的值不能在程序运行时修改。注意:把常量定义为大写字母形式是一个很好的编程习惯#define预处理器105int area;return 0;const关键字int area;return 0;#define与const区别。

2301_79279099的博客 4792

C语言基础-变量和常量

介绍C语言变量和常量,探讨变量和常量之间的区别,简述全局变量和局部变量的作用范围以及区别,简述变量的作用域和声明周期,简述常量的分类,探讨const修饰的常变量与其他常量以及变量的区别,介绍数据类型

m0_52078531的博客 1306

C语言——变量和常量的区别用法

目录: 一:C语言中的变量 1.变量的定义 举例: 2.变量初始化 举例: 3.变量声明 举例: 变量的定义和声明的区别: 4.C 语言中的左值(Lvalues)和右值(Rvalues) 5.变量的内存寻址(与系统有关) 二:C语言中的常量 1.常量的定义 2.整数常量 整数常量的实例: 各种类型的整数常量的实例: 3.浮点常量 浮点常量的实例: 4.字符常量...

刘鑫磊 9658

Rk3568 百兆以太网RMII模式DTS配置详解

本文详细解析了RK3568芯片在百兆以太网RMII模式下的DTS配置方法,包括时钟树配置、PHY接口模式定义及实际工程中的进阶设置。通过实战案例和调试技巧,帮助开发者快速解决RMII模式下的常见问题,提升工业控制设备的网络稳定性。

weixin_29189377的博客 420

视觉语言模型对抗攻击与防御:从传统方法到多模态挑战

本文深入探讨了视觉语言模型(VLM)面临的对抗攻击与防御挑战,从传统单模态攻击到多模态威胁的演进。分析了包括FGSM、PGD等经典攻击方法,以及新兴的多模态攻击如跨模态对抗样本和越狱攻击。同时提出了跨模态一致性检查、动态防御机制等创新防御策略,并结合医疗影像诊断等实战案例,为提升AI系统安全性提供了重要见解。

weixin_29231725的博客 392

C语言之变量与常量

变量与常量 每种基本类型的数据都具有常量和变量两种表现形式。 一.常量 C语言中的常量有以下四种: 整型常量 实型常量 字符型常量 字符串常量 1.整型常量 如: 12345,1314, 520 C语言的整型常量可以用八进制、十进制和十六进制3种形式来表示,采用不同的前缀加以区分: 0表示八进制,如0214。 0x/0X表示十六进制,如0x214、0X214。 不加任何前缀,默认为是十进制,如214。 在整型常量后添加后缀“L”或“l”,表示长整型数,如:100L、

weixin_74045050的博客 4436

嵌入式学习笔记- 关于电容的纹波电流

纹波电流是导致电解电容发热、影响其寿命的关键交流电流成分。它不是一种特殊的电流,而是电路中必然存在的现象。要重视,不能忽视。必须保证电路中的纹波电流 < 电容的额定纹波电流。电容鼓包爆浆,要怀疑是否是纹波电流过大或电容ESR变大所致。希望这个解释能帮助您彻底理解这个概念!二 电容纹波电流与频率的关系在大多数情况下,频率越高,电容所能承受的额定纹波电流值越大。【个人理解:因为频率越低ESR越大,具体见第三节ESR与频率的关系】下面我为您详细解释为什么会这样,以及在实际应用中如何考虑。

qq_35771411的博客 2191

c语言-常量和变量

本文详细介绍了C语言中常量和变量的定义,包括常量的分类、变量的定义、作用域等。

诊断协议那些事儿's blog 1912

Virtuoso集成HspiceD:打通模拟设计全流程的仿真与PEX实战

本文详细介绍了Virtuoso集成HspiceD在模拟设计全流程中的应用,包括仿真与PEX实战。通过无缝衔接Virtuoso和HspiceD,设计师可以在同一环境中完成从原理图设计到PEX后仿真的全流程,大幅提升工作效率。文章还提供了仿真环境配置、前仿真关键设置、PEX全流程详解以及性能调优等实用技巧。

weixin_29271263的博客 96

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真

51单片机8×8LED点阵屏动态显示取模汉字+ Proteus仿真 Proteus仿真 取模软件:pctolcd2002 程序代码 #include<reg52.h> unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行选 unsigned char code tabb[]={0x08,0x49,0x49,0x7F,0x08,0x49,0x49,0x7F};//选列"出" unsigned cha

perseverance51博客 8055

C语言————常量 、变量、 表达式、 语句详谈

常量 常量(Constant)是程序中最基本的元素,有字符(Character)常量、 整数(Integer)常量、浮点数(Floating Point)常量和枚举常量。 下面看一个例子: printf("character: %c\n  integer: %d\n  floating point: %f\n", '}', 34, 3.14);        常量在程序加载内存的常量区

刘森林l的博客 6613

python全栈入门到实战【基础篇 01】Python初识:定位、优势与发展历程

本文介绍了热门编程语言Python。它是解释型高级语言,具通用、入门友好、胶水型特点,以简洁易读为设计哲学。优势包括语法简洁高效、生态庞大、跨平台、社区活跃、应用广泛、门槛低。发展历经诞生(1989-1994,吉多创建,1994年1.0发布)、成长(版本迭代,3.0发布)、崛起(Web与大数据推动)、爆发(AI浪潮助推)及持续迭代阶段。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1万+

c语言常量命名特点,「C语言」常量和变量的表示、应用和变量命名规则

在程序运行中,其值不能改变的量成为常量。在基本数据类型中,常量可分为整型常量、实型常量、符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下:目录:一、常量二、C语言标识符三、变量四、变量命名规则附录:ASCII码表一、常量1.整型常量即整常数,由一个或多个数字组成,可以带正负号C语言中整型常量可用十进制、八进制和十六进制3种形式表示十进制整数:由0~9数字组成,不能以0开始,没有前缀...

weixin_33532301的博客 5396

Simulink开发项1000例实战专栏--实例17:基于 Simulink 的 BLDC 电机驱动系统的设计与实现

项目背景无刷直流电机(BLDC)因其高效、可靠、低维护的特点,广泛应用于电动汽车、无人机、工业自动化等领域。基于 Simulink 的 BLDC 电机驱动系统可以实现对电机的精确控制,包括速度控制、位置控制和转矩控制。通过仿真和测试,可以优化控制算法,提高系统的性能和可靠性。

xiaoheshang_123的博客 561

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C语言初阶之常量和变量

C语言初阶之常量和变量

立志做一个高产且细节博主 1168

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C语言常量和变量详解

C语言的常量和变量详解

qq_28576837的博客 4635

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言中的常量和变量

常量,变量,常变量,标识符

hddhsjsvdg的博客 1179

C语言常量 变量与作用域

变量与常量一、常量与符号常量constdefine二.变量与变量定义命名规则1.变量定义语句2.变量赋初值typedef 一、常量与符号常量 整型常量 以下是合法的整型常量表示形式: 256,-75,0(十进制整型常量) 0237,045,0621(八进制整型常量,用数字0作前导) 0x28AF,0xED4(十六进制整型常量,用数字0与x作前导)435L,350L(长整型常量) 不合法的整型常量举例如下: 096(9非八进制数码) 48EA(十六进制数缺前导字符0x) 0xK(K非十六进制计数字符)

qq_51163115的博客 3万+

C语言的常量、变量和常变量

在计算机高级语言中,数据有两种表现形式:常量和变量。 一、常量 常量的定义:在程序执行过程中,不能被改变的量。 常量分为5种:整形常量、实型常量、字符常量、字符串常量、符号常量。 整型常量: 如0,1,-10,1000等都是整形常量。 实型常量:十进制小数形式和指数形式 1、十进制小数形式:由数字和小数点组成,例如11.2,122.3,0.75,12.0,15.0,-0.75,-12.0等。 2、指数形式:如1.2e3,代表1.2 * 10^3,-1.2e3,代表-1.2 ** 10^3,1.2e-

weixin_52564923的博客 3313

在c语言中 常量和变量都有数据类型对吗,计算机二级C语言变量和常量知识点

计算机二级C语言变量和常量知识点C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。下面是关于计算机二级C语言变量和常量知识点,希望大家认真阅读!一、变量(一)、变量类型和表示方法1.什么是变量?一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他...

weixin_29535345的博客 5739

C语言变量和常量

C语言变量和常量

weixin_56810796的博客 1275

学了这么久C语言我居然不知道变量常量?

在C语言中,可以使用的数据分为两类:常量和变量。 常量:常量顾名思义就是固定不变的量,在系统编译时已经确定的,常用关键字const来创建,并且在创建常量必须设置它的初始值。常量的类型只能为下列类型之一:sbyte,byte,short,ushort,int,unit,long,ulong,cahr,float,decimal,double,bool,string等。 const int PI=23; //正确的声明方法 const int CI; //错误,定义常量时没有初始化 变量

yj 3006

C语言初阶之变量和常量

介绍C语言初阶的一些常量和变量的有关知识

weixin_62753802的博客 1434
上一篇: C语言从 0 到 1
下一篇: 简单说说C语言标准库和嵌入式C语言标准库
万我.
博客等级 码龄1年 460粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值