C 变量

目录

1.  C变量

2.  C变量定义

2.1  变量初始化

2.2  C中的变量声明

3.  C中的左值(Lvalues)和右值(Rvalues)


1.  C变量

在C语言中,变量可以根据其类型分为以下几种基本类型:

  1. 整型变量:用于存储整数值,包括 intshortlong 等类型。
  2. 浮点型变量:用于存储带有小数部分的数值,包括 floatdouble 类型。
  3. 字符型变量:用于存储单个字符,使用 char 类型。
  4. 指针变量:用于存储内存地址,可以指向其他变量或数据,使用 * 符号声明。
  5. 数组变量:用于存储一系列相同类型的数据,使用 [ ] 符号声明。
  6. 结构体变量:用于存储多个不同类型的数据作为一个整体,使用 struct 关键字声明。
  7. 枚举变量:用于定义一组命名的整数常量,使用 enum 关键字声明。

        这些基本类型的变量可以根据需要进行声明和定义,并且可以通过运算符进行操作。在C语言中,变量的名称可以由字母、数字和下划线组成,但必须以字母或下划线开头。另外,C语言是大小写敏感的,因此大写字母和小写字母被视为不同的字符。有以下几种基本的变量类型:

类型描述
char通常是一个字节(八位), 这是一个整数类型。
int整型,4 个字节,取值范围 -2147483648 到 2147483647。
float

单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。

double

双精度浮点值。双精度是1位符号,11位指数,52位小数。

void表示类型的缺失。

2.  C变量定义

        在C语言中,变量定义用于告诉编译器如何为特定类型的变量分配存储空间。变量定义通常包括数据类型和一个或多个变量名的列表。

其基本形式如下:

type variable_list;

type 表示变量的数据类型,可以是整型、浮点型、字符型、指针等,也可以是用户自定义的对象。

variable_list 可以由一个或多个变量的名称组成,多个变量之间用逗号,分隔,变量由字母、数字和下划线组成,且以字母或下划线开头。

下面是一个简单的示例:

int a, b, c; // 定义了三个整型变量a、b、c
float x, y; // 定义了两个浮点型变量x、y
char ch; // 定义了一个字符型变量ch

        在上面的示例中,intfloatchar 是数据类型,后面紧跟的是变量名列表。这些定义告诉编译器要为这些变量分配适当大小的存储空间,并且按照定义的顺序依次进行分配。

        需要注意的是,变量定义只是告诉编译器如何创建变量的存储,实际上并没有为变量分配初始值。如果需要给变量赋初值,可以使用赋值语句进行初始化,例如:

int a = 10; // 定义整型变量a,并赋初值为10
float x = 3.14; // 定义浮点型变量x,并赋初值为3.14
char ch = 'A'; // 定义字符型变量ch,并赋初值为字符'A'

        这样就可以在定义变量的同时给它们赋予初始值。

2.1  变量初始化

        在C语言中,变量的初始化可以在定义时进行,也可以在后续的代码中进行。当你在定义变量的同时为其赋予一个初始值时,可以使用初始化器来实现。初始化器使用等号(=)将变量名和初始值连接起来,如下所示:

type variable_name = value;

        其中,type 表示变量的数据类型,variable_name 是变量的名称,value 是变量的初始值。

以下是一些示例:

int a = 10; // 定义整型变量a,并将其初始化为10
float x = 3.14; // 定义浮点型变量x,并将其初始化为3.14
char ch = 'A'; // 定义字符型变量ch,并将其初始化为字符'A'

        在上面的示例中,变量的定义与初始化是同时进行的,通过初始化器将变量名和初始值连接起来。这样,在变量定义完成后,变量就被赋予了初始值。

        需要注意的是,变量的初始化值必须与变量的数据类型兼容。例如,整型变量只能被初始化为整数值,浮点型变量只能被初始化为浮点数值,字符型变量只能被初始化为字符值。

        此外,如果在定义变量时没有使用初始化器,那么变量将不会被自动初始化,其初始值将是未知的。在这种情况下,如果在后续的代码中使用未初始化的变量,可能会导致不可预测的结果。

后续初始化变量:

在变量定义后的代码中,可以使用赋值运算符 = 为变量赋予一个新的值。

type variable_name;    // 变量定义
variable_name = new_value;    // 变量初始化

例如:

int x;          // 整型变量x定义
x = 20;         // 变量x初始化为20
float pi;       // 浮点型变量pi定义
pi = 3.14159;   // 变量pi初始化为3.14159
char ch;        // 字符型变量ch定义
ch = 'B';       // 变量ch初始化为字符'B'

变量不初始化:

        在C语言中,变量没有显式初始化时会有默认值,这些默认值取决于变量的类型和作用域。

        全局变量和静态变量(包括在函数内部定义的静态变量和在函数外部定义的全局变量)的默认初始值为零。

具体来说:

  • 整型变量(如int、short、long等)的默认值为0。
  • 浮点型变量(如float、double等)的默认值为0.0。
  • 字符型变量(char)的默认值为'\0',即空字符。
  • 指针变量的默认值为NULL,表示指针不指向任何有效的内存地址。
  • 对于数组、结构体、联合等复合类型的变量,它们的元素或成员会按照相应的规则进行默认初始化,这可能包括对元素递归应用默认规则。

        需要注意的是,局部变量(在函数内部定义的非静态变量)不会自动初始化为默认值,它们的初始值是未定义的,也就是包含垃圾值。因此,在使用局部变量之前,应该显式地为其赋予一个初始值。

        总结起来,C语言中变量的默认值取决于其类型和作用域。全局变量和静态变量的默认值为0,字符型变量的默认值为'\0',指针变量的默认值为NULL,而局部变量没有默认值,其初始值是未定义的。

2.2  C中的变量声明

        变量声明向编译器保证变量以指定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。

变量的声明有两种情况:

  • 1、一种是需要建立存储空间的。例如:int a 在声明的时候就已经建立了存储空间。
  • 2、另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。 例如:extern int a 其中变量 a 可以在别的文件中定义的。
  • 除非有extern关键字,否则都是变量的定义。

3.  C中的左值(Lvalues)和右值(Rvalues)

C 中有两种类型的表达式:

  1. 左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
  2. 右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。

Visual Studio编辑器左侧菜单栏不小心关掉如何打开(左侧解决方案资源管理器不显示如何打开)、C语言中int main和void main的区别以及C工程的创建_visual studio2022 资源管理器怎么打开桌面面板-CSDN博客

Visual Studio编辑器中C4996 ‘scanf‘: This function or variable may be unsafe.问题解决方案-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/655382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言nlp学习 三

4-8 Prompt-Learning--应用_哔哩哔哩_bilibili Prompt Learning(提示学习)是近年来在自然语言处理领域中,特别是在预训练-微调范式下的一个热门研究方向。它主要与大规模预训练模型如GPT系列、BERT等的应用密切相关。 在传统的微调过程中&a…

将vite项目(vue/react)使用vite-plugin-pwa配置为pwa应用,只需要3分钟即可

将项目配置为pwa模式,就可以在浏览器里面看到安装应用的选项,并且可以将web网页像app一样添加到手机桌面或者pad桌面上,或者是电脑桌面上,这样带来的体验就像真的在一个app上运行一样。为了实现这个目的,我们可以为vue…

算法设计与分析实验:滑动窗口与二分查找

目录 一、寻找两个正序数组的中位数 1.1 具体思路 1.2 流程展示 1.3 代码实现 1.4 代码复杂度分析 1.5 运行结果 二、X的平方根 2.1 具体思路 2.2 流程展示 2.3 代码实现 2.4 代码复杂度分析 2.5 运行结果 三、两数之和 II-输入有序数组 3.1 采用二分查找的思想 …

LeetCode —— 43. 字符串相乘

😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️Take your time ! 😶‍🌫️😶‍🌫️😶‍🌫️😶‍🌫️…

Bio-Rad(Abd serotec)独特性抗体

当一种抗体与另一种抗体的独特型结合时,它被称为抗独特型抗体。抗体的可变部分包括独特的抗原结合位点,称为独特型。独特型(即独特型)内表位的组合对于每种抗体都是独特的。 如今开发的大多数治疗性单克隆抗体是人的或人源化的,用于诱导抗药…

【国产MCU】-认识CH32V307及开发环境搭建

认识CH32V307及开发环境搭建 文章目录 认识CH32V307及开发环境搭建1、CH32V307介绍2、开发环境搭建3、程序固件下载1、CH32V307介绍 CH32V307是沁恒推出的一款基于32位RISC-V设计的互联型微控制器,配备了硬件堆栈区、快速中断入口,在标准RISC-V基础上大大提高了中断响应速度…

java 社区资源管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web社区资源管系统是一套完善的java web信息管理系统 ,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.…

bxCAN-中断

bxCAN中断 bxCAN 共有四个专用的中断向量。每个中断源均可通过 CAN 中断使能寄存器 (CAN_IER) 来单独地使能或禁止。 发送中断可由以下事件产生: 发送邮箱 0 变为空,CAN_TSR 寄存器的 RQCP0 位置 1。 发送邮箱 1 变为空,CAN_TSR 寄存器…

SkyWalking+es部署与使用

第一步下载skywalking :http://skywalking.apache.org/downloads/ 第二步下载es:https://www.elastic.co/cn/downloads/elasticsearch 注:skywalking 和es要版本对应,可从下面连接查看版本对应关系,8.5.0为skywalking 版本号 Index of /di…

Apache Commons Collection3.2.1反序列化分析(CC1)

Commons Collections简介 Commons Collections是Apache软件基金会的一个开源项目,它提供了一组可复用的数据结构和算法的实现,旨在扩展和增强Java集合框架,以便更好地满足不同类型应用的需求。该项目包含了多种不同类型的集合类、迭代器、队…

大数据学习之Redis、从零基础到入门(三)

目录 三、redis10大数据类型 1.哪十个? 1.1 redis字符串(String) 1.2 redis列表(List) 1.3 redis哈希表(Hash) 1.4 redis集合(Set) 1.5 redis有序集合&#xff08…

Android SystemUI 介绍

目录 一、什么是SystemUI 二、SystemUI应用源码 三、学习 SystemUI 的核心组件 四、修改状态与导航栏测试 本篇文章,主要科普的是Android SystemUI , 下一篇文章我们将介绍如何把Android SystemUI 应用转成Android Studio 工程项目。 一、什么是Syst…

华为配置小型网络WLAN 的基本业务示例

配置小型网络WLAN基本业务示例 组网图形 图1 配置小型网络WLAN基本业务组网图 小型WLAN网络简介配置注意事项组网需求数据规划配置思路操作步骤配置文件 小型WLAN网络简介 本文介绍的WLAN网络是指利用频率为2.4GHz或5GHz的射频信号作为传输介质的无线局域网,相对于有…

Vue之初识Vue CLI 脚手架

Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …

Hack The Box-Pov

信息收集&端口利用 先使用nmap对主机进行端口扫描 nmap 10.10.11.251只开放了80端口 访问网站后发现没有什么功能点,尝试目录扫描 并没有什么能够利用的点 使用gobuster进行子域名扫描 gobuster dns -d pov.htb -w /usr/share/wordlists/seclists/Discovery/DNS/subdo…

MSE Nacos 配置变更审计平台使用指南

作者:孙立(涌月)、邢学超(于怀)、李艳林(彦林) 配置审计平台简介 Nacos [ 1] 作为一款业界主流的微服务注册中心和配置中心,管理着企业核心的配置资产,由于配置变更的安…

聚醚醚酮(Polyether Ether Ketone)PEEK在粘接使用时使用UV胶水的优势有哪些?要注意哪些事项?

使用UV胶水在聚醚醚酮(Polyether Ether Ketone,PEEK)上进行粘接可能具有一些优势,但同时也需要注意一些事项。以下是使用UV胶水的优势和需要考虑的事项: 优势: 1.快速固化: UV胶水通常具有快速…

spark window源码探索

核心类: 1. WindowExec 物理执行逻辑入口,主要doExecute()和父类WindowExecBase 2. WindowFunctionFrame 窗框执行抽象,其子类对应sql语句的不同窗框 其中又抽象出BoundOrdering类, 用于判断一行是否在界限内(Bound), 分为RowBoundOrdering…

总结10(break和continue)

break break如果用于循环是用来终止循环 break如果用于switch,则是用于终止switch break不能直接用于if,除非if属于循环内部的一个子句(下图为举例) 例1: (该图中break与if没有关系,只终止for循…

3、css设置样式总结、节点、节点之间关系、创建元素的方式、BOM

一、css设置样式的方式总结: 对象.style.css属性 对象.className ‘’ 会覆盖原来的类 对象.setAttribut(‘style’,‘css样式’) 对象.setAttribute(‘class’,‘类名’) 对象.style.setProperty(css属性名,css属性值) 对象.style.cssText “css样式表” …