c语言-常量和变量

文章目录

  • 一、常量是什么?
    • (1)整型常量:
    • (2)实型常量:
    • (3)字符常量:
    • (4)字符串常量
    • (5)地址常量
  • 二、define 和 const
    • 宏定义
    • const
  • 三、变量是什么?
    • 标识符命名规则
    • 变量的作用域
      • 局部变量
      • 全局变量
  • 四、c语言中常见的关键字
    • 数据类型关键字
    • 控制语句关键字
    • 存储类型关键字
    • 其他关键字


一、常量是什么?

在程序运行过程中,值不能被改变的量。
eg:数字1、2、3、0.1、3.14和字母’a’、‘b’、”hello“等

常量的分类:

(1)整型常量:

整数。如1、2、3、10000、0、-100、0x8A等

(2)实型常量:

有两种表示形式
①十进制小数形式:由数字和小数点组成。如123.456、-12.34等
②指数形式:由于计算机输入或输出时无法表示上标和下标,所以规定以字母e或E代表以10为底的指数,注意:e和E之前必须要有数字,且e和E后面必须为整数,不能写成e4、12e2.5.
正确表示:12.34e3(表示12.34*10^3)、-67.89e-16 (表示-67.89 *10 ^16)等

(3)字符常量:

有两种形式的字符常量
①普通字符常量:用单引号括起来的一个字符
如‘a’、‘B’、‘3’、‘#’。不能写成‘ab’或‘12’,注意单引号只是一个界限符,字符是指用单引号括起来的符号,不包括单引号。字符型在内存中是以ASCII码形式存储的,例如字符‘a’的ASCII码的十进制为97,在存储单元中存放的是97的二进制形式。

ASCII码 是 American Standard Code for Information Interchange 的缩写
ascii
83-53H-S

②转义字符:以字符\开头的字符序列
\n换行
\t水平制表符tab
'单引号
"双引号
\x十六进制形式
十六进制的转义字符 ‘\x56’ :x后面的十六进制数最多两个,最少一个

(4)字符串常量

用一对双引号括起来的若干个字符
如“ABC”、“123”等,用双引号把若干个(0个、1个、更多)字符括起来,字符串不包括双引号。注意不能写成‘abc’、‘123’,单引号内只能包含一个字符,表示字符常量;双引号内可以包含一串字符,表示字符串常量。

(5)地址常量

每一个常量、变量、数组的地址在程序运行期间是不能够被改变的,称为地址常量。

二、define 和 const

宏定义

PI也是常量,数值为3.1415;注意:在进行宏定义时,没有分号结束标记

#define PI 3.1415

const

定义语法:const 类型名 变量名 = 变量值

#include <stdio.h>#define PI 3.1415			// 常量int main(void)
{const int r = 3;		// 只读变量float s = PI * r * r;	// 圆的面积  s = PI x 半径的平方float l = 2 * PI * r;	// 圆的周长  l = 2 * PI * r	printf("圆的周长为:%.2f\n", l);	// 指定小数点后保留2位, 对第3位做,4舍五入printf("圆的面积为:%.2f\n", s);	// 指定小数点后保留2位return 0;
}

三、变量是什么?

变量:在程序运行中,值可以改变的量。
变量代表一个有名字的、具有特定属性的一个存储单元,可以用来存储数据,也就是变量的值。
变量必须先定义后使用。命名规则应符合标识符命名规则。

标识符命名规则

①只能由字母、数字、下划线组成,并且数字不能作为开头。(字母是区分大小写的)

#¥特殊字符不能作为标识符

②不允许是关键字,同一个作用域范围内定义的标识符不允许重名。
③工程实践中:通常常量使用大写、变量使用小写。大小写严格区分

变量的作用域

C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量。作用域是变量可以被访问的区间。

局部变量

局部变量也称为内部变量。局部变量是在一个函数内部或一个代码块中定义的变量,只能在被函数和代码块范围内有效。 离开该作用域后再使用这种变量是非法的。

void test()
{int b = 20; // b是一个局部变量,在test函数内有效
}int main()
{int a = 10; // a是一个局部变量,在main函数内有效test();//块作用域的可见范围是从定义处到包含该定义的块的末尾;块是用花括号“{}”括起来的代码区域,定义在块中的变量具有块作用域。{int c = 30; //c也是一个局部变量,在大括号内有效}
}

主函数main中定义的变量a也只能在主函数内有效,虽然主函数调用了test函数,但a并不在test函数内有效,主函数也不能使用test函数内定义的b变量。

允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了易懂,不提倡在不同的函数中使用相同的变量名。

形式参数也是局部变量。

在一个函数内部,用大括号括起来的一段代码块,叫做程序块。在程序块中定义的变量,也是只在本程序块中才有效的。离开本程序块,就无效,释放内存单元。

全局变量

全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。

int test(int x, int y)
{int z;z = x > y? x : y;return z;
}int main()
{extern int a, b;printf("%d\n", test(a, b));
}int a = 10, b = 2;

static修饰的全局变量不能被其他文件所访问,只能限制于本文件中访问。成为静态外部变量。

四、c语言中常见的关键字

数据类型关键字

关键字说明
char声明字符变量
double声明双精度变量
float声明浮点型变量
int声明整型变量
short声明短整型变量
long声明长整型变量
unsigned声明无符号类型变量
signed声明有符号类型变量
struct声明结构体变量
union声明共用体或联合数据类型
void声明函数无返回值或无参数,声明无类型指针
enum声明枚举类型

控制语句关键字

关键字说明
for遍历循环
do其后紧跟循环体
while条件循环或死循环
break跳出当前循环
continue终止本次循环,开始下次循环
if条件语句
else条件语句否定分支
goto无条件跳转语句
switch用于多条件判断语句
case多条件判断语句分支
default开关语句的其它分支
return函数返回语句

存储类型关键字

关键字说明
auto声明自动变量
extern声明变量是在其他文件定义
register声明寄存器变量
static声明静态变量

其他关键字

关键字说明
const声明只读变量
sizeof计算数据类型长度(字节数)
typedef给数据类型取别名
volatile所修饰的对象不能被编译器优化

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

UI设计软件全景:13款工具助力创意实现

选择恰当的UI设计工具对于创建美观且用户体验良好的应用程序界面至关重要。不同的APP功能可能需要不同的界面设计软件&#xff0c;但并非所有工具都需要精通&#xff0c;熟练掌握几个常用的就足够了。以下是13款APP界面设计软件&#xff0c;它们能够为你的团队提供绘制APP界面所…

mysql 8.0.39 Caused by: java.sql.SQLException: Illegal mix of collations 异常解决

java服务可以正常启动&#xff0c;页面发现查询报错Illegal mix of collations 报错信息&#xff1a; ### Cause: java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,COERCIBLE) and (utf8mb4_0900_ai_ci,COERCIBLE) for operation ; uncategorized SQ…

C++友元类的分文件编写

在学习C的关于友元类的知识时&#xff0c;网课例程中是在main函数文件中编写实现&#xff0c;但是我们知道&#xff0c;一般情况下&#xff0c;类以及类的成员函数实现都是在不同文件中实现的&#xff0c;因此&#xff0c;我们会自然的想到友元类是如何在不同文件下编写实现的&…

vue2与vue3生命周期差异整理

1、vue3 与 vue2 生命周期对比 生命周期整体分为四个阶段&#xff0c;分别是&#xff1a;创建、挂载、更新、销毁&#xff0c;每个阶段都有两个钩子&#xff0c;一前一后。 生命周期Vue 2Vue 3说明创建阶段beforeCreatesetup开始创建组件之前,实例被创建&#xff0c;还没有初…

c语言之在结构体里面定义函数指针

还是在看redis3.0源码的时候&#xff0c;遇到如下问题&#xff1a; 这个时候我们回到list这个结构体的设计上面 首先我们必须要注意的是函数名字就可以看成指针地址。 所以下面我们写一个简单的实例看一下具体的用法&#xff1a; #include <stdio.h> #include <stdl…

代码随想录一刷——1.两数之和

当我们需要查询一个元素是否出现过&#xff0c;或者一个元素是否在集合里的时候&#xff0c;就要第一时间想到哈希法。 C&#xff1a; unordered_map class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int…

EDA二维码生成工具 V1.2

EDA二维码生成工具用于在原理图、PCB环境中生成矢量二维码&#xff0c;具有生成速度快、生成效率高的特点&#xff0c;支持中文字符、英文字符生成。 此工具可直接输出在原理图、原理图库文档、PCB、PCB库文档中&#xff0c;可同时输出多种格式&#xff0c;可在Altium …

鸿蒙生态崛起带来的机遇与挑战

目录 1.概述 2.生态崛起 2.1.鸿蒙生态的认知和了解 2.2.鸿蒙生态的崛起分析 2.3.开发者的机遇 2.4.华为开发者大会 3.鸿蒙生态开发的挑战 3.1.开发工具 3.2.技术难度 3.3.生态竞争 3.4.抓住机遇、应对挑战 4.鸿蒙生态未来发展趋势 4.1.发展趋势 4.2.18N 4.3.开发…

JavaCV 图像边缘检测 之 Sobel算子 算法

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

二百七十四、Kettle——ClickHouse中对错误数据表中进行数据修复(实时)

一、目的 在完成数据清洗、错误数据之后&#xff0c;需要根据修复规则对错误数据进行修复 二、Hive中原有代码 insert into table hurys_db.dwd_queue partition(day) selecta3.id,a3.device_no,a3.source_device_type,a3.sn,a3.model,a3.create_time,a3.lane_no,a3.lane_…

第2章 Android App开发基础

第 2 章 Android App开发基础 bilibili学习地址 github代码地址 本章介绍基于Android系统的App开发常识&#xff0c;包括以下几个方面&#xff1a;App开发与其他软件开发有什么不一 样&#xff0c;App工程是怎样的组织结构又是怎样配置的&#xff0c;App开发的前后端分离设计…

ARM base instruction -- csetm

Conditional Set Mask sets all bits of the destination register to 1 if the condition is TRUE, and otherwise sets all bits to 0. 如果条件为TRUE&#xff0c;则条件设置掩码将目标寄存器的所有位设置为1&#xff0c;否则将所有位设为0。 32-bit variant Applies w…

rom定制系列------小米8青春版定制安卓14批量线刷固件 原生系统

&#x1f49d;&#x1f49d;&#x1f49d;小米8青春版。机型代码platina。官方最终版为 12.5.1安卓10的版本。客户需要安卓14的固件以便使用他们的软件。根据测试&#xff0c;原生pixeExpe固件适配兼容性较好。为方便客户批量进行刷写。修改固件为可fast批量刷写。整合底层分区…

java项目之校园资料分享平台(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的校园资料分享平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 校园资料分享平台的主要…

Jmeter5.X性能测试

Jmeter5.X性能测试 文章目录 Jmeter5.X性能测试一、掌握Http基础协议1.1 浏览器的B/S架构和C/S架构1.2 HyperText Transfer Protocol 超文本传输协议1.3 超文本传输协议Http消息体拆分讲解1.4 HTTP的九种请求方法和响应码介绍1.5 Http请求头/响应头1.6 Http常见请求/响应头cont…

qt管理系统框架(好看界面、漂亮界面、好看的界面、漂亮的界面)

概述 最近一个项目用QT开发&#xff0c;然后找了美工帮设计了下界面。总算完工&#xff0c;后想一下干脆抽出一个基础框架&#xff0c;方便以后用。 功能 支持mysql、echarts。 支持加载动态权限菜单&#xff0c;轻松权限控制。 支持遮罩对话框、抽屉 支持开机启动动画界面 内…

力扣——相同的树(C语言)

1.题目&#xff1a; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 2.原理&#xff1a; 这里直接将两个数的结点进行比较&#xff0c;向下递归&…

2024年双11买什么东西划算?2024年双十一必买清单好物大总结

双十一购物节&#xff0c;海量商品与诱人折扣并存&#xff0c;正是我们精打细算、理性消费的好时机。面对琳琅满目的爆款与折扣&#xff0c;记得先问问自己&#xff1a;这真的是我需要的吗&#xff1f;在日常中能否发挥其价值&#xff1f;基于这样的考量&#xff0c;我们精选了…

机器学习入门指南:从基础到实践

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 机器学习入门指南&#xff1a;从基础到实践 机器学习入门指南&#xff1a;从基础到实践 机器学习入门指南&#xff1a;从基础到实…

通义灵码实操—飞机大战游戏

通义灵码实操—飞机大战游戏 有没有想象过自己独立编写一个有趣的小游戏。在本实践课程中&#xff0c;你不仅可以实现这个想法&#xff0c;而且还将得到通义灵码智能编程助手的支持与指导。我们将携手步入编程的神奇世界&#xff0c;以一种简洁、高效且具有创造性的方式&#…