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.mfbz.cn/a/360549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2.室内设计学习 - CAD 2021 调整经典界面教程及基本设置

设置经典界面 1.在第二行的空白处右击,弹出对话框,并点击【关闭】,关闭掉。 2.菜单栏没有显示的情况下,在最上面的一排,点击向下的箭头展开下拉框,勾选 【显示菜单栏】 3.点击菜单【工具】-【工具栏】-【a…

【Docker】在Windows下使用Docker Desktop创建nginx容器并访问默认网站

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

AI人工智能可以怎么应用?——GPT4v图文识别问答功能

沃卡 AI 已支持 AI识图问答TTS语音对话文档总结对话Dall E3 对话文生图国内大模型集合AI 绘画思维导图,而且功能还在不断更新优化,丰富好用!一个系统满足您多个需求! 大家可以通过收藏网页www.woka.chat 直接进行访问&#xff0c…

10s 内得到一个干净、开箱即用的 Linux 系统

安装 使用官方脚本安装我的服务器不行 官方脚本 mkdir instantbox && cd $_ bash <(curl -sSL https://raw.githubusercontent.com/instantbox/instantbox/master/init.sh) 下面是我的完整安装过程 mkdir /opt/instantbox cd /opt/instantbox 1.脚本文件 (这个没…

Asp.net移除Server, X-Powered-By, 和X-AspNet-Version头

移除X-AspNet-Version很简单,只需要在Web.config中增加这个配置节: <httpRuntime enableVersionHeader"false" />移除Server在Global.asax文件总增加&#xff1a; //隐藏IIS版本 protected void Application_PreSendRequestHeaders() {HttpContext.Current.Res…

数据结构day7

1.思维导图 1.二叉树递归创建 2.二叉树先中后序遍历 3.二叉树计算节点 4.二叉树计算深度。 5.编程实现快速排序降序

C# Onnx yolov8 水表读数检测

目录 效果 模型信息 项目 代码 训练数据 下载 C# Onnx yolov8 水表读数检测 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-01-31T10:18:10.141465 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-…

Linus Torvalds的20个事实

Linus Torvalds 是 Linux 操作系统的创造者&#xff0c;至今还在维护内核。本文是他的自传《Just for fun》的简短摘录&#xff0c;关于他个人的20个事实&#xff0c;比如他的老婆是他的学生。 Brief: Some known, some lesser known – here are 20 facts about the Linus Tor…

【Maven基础】依赖插件管理工具

Maven Maven 作用Maven 安装Maven 目录Maven config settings创建 Maven 项目运行 Java 文件Maven 坐标导入 Maven 项目依赖管理依赖配置 依赖传递排除依赖 依赖范围生命周期test跳过 Test Maven 作用 Maven 安装 Maven 目录 bin 存放可执行文件 config 存放 Maven 的配置文件 …

C++ 数论相关题目,博弈论,SG函数,集合-Nim游戏

给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S 。 现在有两位玩家轮流操作&#xff0c;每次操作可以从任意一堆石子中拿取石子&#xff0c;每次拿取的石子数量必须包含于集合 S &#xff0c;最后无法进行操作的人视为失败。 问如果两人都采用最优策略&#xff0c;…

C++入门学习(二十一)选择结构-if语句

1、单行if语句 假设有个人去酒吧&#xff0c;但是酒吧不允许18岁以下的人进入&#xff0c;此时可以使用if语句判断. #include <iostream> #include <string> using namespace std;int main() { int a;cout<<"请输入您的年龄&#xff1a;"<…

软考复习之数据结构篇

算法设计 迭代法&#xff1a;用于求方程的近似根。 1、若方程无解&#xff0c;则算法求出的近似根序列就不会收敛&#xff0c;迭代过程会变成死循环&#xff0c;因此在使用迭代算法前应先考查方程是否有解&#xff0c;并在程序中对迭代的次数给予限制。 2、方程虽有解&#…

PyTorch深度学习实战(34)——Pix2Pix详解与实现

PyTorch深度学习实战&#xff08;34&#xff09;——Pix2Pix详解与实现 0. 前言1. 模型与数据集1.1 Pix2Pix 基本原理1.2 数据集分析1.3 模型构建策略 2. 实现 Pix2Pix 生成图像小结系列链接 0. 前言 Pix2Pix 是基于生成对抗网络 (Convolutional Generative Adversarial Netwo…

Fog Volume 3

仅支持内置渲染管线 Fog Volume 3是一个体积雾渲染器,旨在模拟各种大气效果。它提供了大量的控制,以帮助您在外观和性能方面满足您的需求。有关详细信息,请查看文档。 下载: ​​Unity资源商店链接 资源下载链接 效果图:

springBoot - mybatis 多数据源实现方案

应用场景: 多数据源 小型项目 或者 大项目的临时方案中比较常用.在日常开发中,可能我们需要查询多个数据库,但是数据库实例不同,导致不能通过 指定schema的方式 区分不同的库, 这种情况下就需要我们应用程序配置多数据源 实现方式: 首先自定义实现 datasource数据源 为当前…

基于SSM的二手车交易网站设计与实现(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的二手车交易网站设计与实现&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过…

【C++初阶】C++入门(2)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、函数重载1.1 函数重载的概念1.2 函数重载的种类1.3 C支持函数重载的原理 二…

AI技术的机遇与挑战

现在&#xff0c;企业对人工智能&#xff08;AI&#xff09;技术人员的需求高涨&#xff0c;对人工智能项目大幅投入预算。全球新冠肺炎疫情等驱动因素促进了数字化转型&#xff0c;极大地加快了AI和机器学习&#xff08;ML&#xff09;技术的发展。越来越多的企业正在研究如何…

Vue_Router_守卫

路由守卫&#xff1a;路由进行权限控制。 分为&#xff1a;全局守卫&#xff0c;独享守卫&#xff0c;组件内守卫。 全局守卫 //创建并暴露 路由器 const routernew Vrouter({mode:"hash"//"hash路径出现#但是兼容性强&#xff0c;history没有#兼容性差"…

重新看:浏览器是如何渲染页面的?

这里写自定义目录标题 写在前面的话浏览器是如何渲染页面的&#xff1f;1、解析HTML &#xff08; Parse HTML&#xff09;2、样式计算&#xff08; Recalculate Style&#xff09;3、布局&#xff08; Layout&#xff09;4、分层&#xff08; Layer&#xff09;5、绘制&#x…
最新文章