【C语言】/*数据类型和变量*/

目录

前言

一、数据类型的介绍

二、内置数据类型的介绍 

2.1 字符型

2.2 整型

2.3 浮点型

2.4 布尔类型

三、数据类型长度的计算

3.1 sizeof 操作符

3.2 数据类型的长度(VS2022)

3.3 sizeof中表达式不计算

四、signed 和 unsigned

五、数据类型的取值范围

六、变量


前言

本篇文章解决的问题:

1. 数据类型是什么,为什么会有数据类型

2. 数据类型分为哪几类

3. 内置数据类型各自有哪些分类

4. 布尔类型是用于干什么的,我们可以如何使用它

5. sizeof 操作符有哪些我们需要了解掌握的点

6. signed 和 unsigned 关键字是用于修饰什么类型的,用它们两修饰有什么区别

7. 数据类型取值范围的意义是什么,我们可以在哪些头文件中查看各数据类型的取值范围

8. 什么是变量,什么是常量,变量怎么创建,什么叫变量的初始化

9. 全局变量和局部变量如何区分,它们有什么区别,分别在内存中存储在哪个区域

一、数据类型的介绍

1. 概念:C语言中提供了丰富的数据类型来描述生活中的各种数据,例如,使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数,所谓“类型”就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据

2. 数据类型的分类:

二、内置数据类型的介绍 

2.1 字符型

1. char (char通常表示有符号的字符型,但在有些编译器中表示无符号整型,因此在不确定char到底表示什么时,最好自己注释明,到底是有符号的char,还是无符号的char)

2. [signed] char

3. unsigned char

2.2 整型

//短整型

short [int]

[signed] short [int]

unsigned short [int]

//整型

int

[signed] int

unsigned int

//长整型

long [int]

[signed] long [int]

unsigned long [int]

//更长整型,C99中引入

long long [int]

[signed] long long [int]

unsigned long long [int]

2.3 浮点型

1. float(单精度浮点型)

2. double(双精度浮点型)

3. long double(更高精度浮点型)

2.4 布尔类型

1. 介绍:C语⾔中原来并没有单独设置表示真假的类型,⽽是使⽤整数 0 表⽰假,⾮零值表⽰真,在 C99 中才引⼊了布尔类型 ,专⻔表⽰真假;布尔类型的使⽤得包含头⽂件<stdbool.h>,布尔类型变量的取值是:true或者false。在<stdbool.h>中是这样声明的:

#define bool _Bool

#define false 0

#define true 1

2. 布尔类型使用的代码演示:

#include <stdio.h>

#include <stdbool.h>

int main()

{

        bool flag = true;

        if (flag)

                printf("hello");

}

三、数据类型长度的计算

概念:每⼀种数据类型都有⾃⼰的⻓度,使⽤不同的数据类型,能够创建出⻓度不同的变量,变量⻓度的不同,存储的数据范围就有所差异。

3.1 sizeof 操作符

1. 概念:sizeof 是⼀个关键字,也是操作符,是专⻔⽤来计算 sizeof 操作符数类型⻓度的,单位是字节

2. sizeof 操作符的操作数可以是类型,也可是变量名或者表达式。

3. sizeof 的操作数如果不是类型,是表达式、变量名的时候,可以省略掉后边的括号的,但如果是类型一定不能省略

4. sizeof 后边的表达式是不真实参与运算的,sizeof计算的结果根据表达式赋值操作符左边的类型来得出⼤⼩。

5. sizeof 的计算结果是 size_t 类型的。

6. 科普:sizeof 操作符的返回值,C 语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定 sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是unsigned int ,也有可能是unsigned long ,甚⾄是 unsigned long long ,对应的 printf() 占位符分别是 %u、%lu 和 %llu 。这样不利于程序的可移植性,因此 C 语⾔提供了⼀个解决⽅法,创造了⼀个类型别名 size_t ,⽤来统⼀表⽰ sizeof 的返回值类型。对应当前系统的 sizeof 的返回值类型,可能是unsigned int ,也可能是 unsigned long long 。

3.2 数据类型的长度(VS2022)

3.3 sizeof中表达式不计算

1. 解释:表达式的执⾏要在程序运⾏期间才能执⾏,而在编译期间sizeof已经被处理了,所以在运⾏期间不会执⾏表达式。

四、signed 和 unsigned

1. 概念:signed 和 unsigned 关键字在 C 语⾔中用于修饰字符型和整型类型signed 关键字,表⽰⼀个类型带有正负号,包含负值;unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数。

2. 以 int 类型讲解 signed 和 unsigned 的具体区别:对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int,由于这是默认情况,关键字 signed ⼀般都省略不写,但是写了也不算错;int 类型也可以不带正负号,只表⽰⾮负整数,这时就必须使⽤关键字 unsigned 声明变量。整数变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。 ⽐如,16位的 signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽ unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了65,535。另外,unsigned int ⾥⾯的 int 是可以省略不写的,例如:unsigned a

五、数据类型的取值范围

1. 概念:其实每⼀种数据类型都有⾃⼰的取值范围,有了丰富的类型,我们就可以在适当的场景下去选择适合的类型

2. 如果要查看当前系统上不同数据类型的极限值: limits.h ⽂件中说明了整型类型的取值范围;float.h 这个头⽂件中说明浮点型类型的取值范围。为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量文件中声明的极限值常量。

六、变量

1. 概念:类型是⽤来创建变量的,C语⾔中把经常变化的值称为变量,不变的值称为常量

2. 变量创建的语法形式:data_type name;例如:int age;  char ch;  double weight;

3. 变量在创建的时候就给⼀个初始值,就叫初始化,例如:int age = 18; char ch = 'w'; double weight = 48.0;

4. 变量的分类:

    全局变量:在⼤括号外部定义的变量就是全局变量(全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的)

    局部变量:在⼤括号内部定义的变量就是局部变量(局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的)

5. 当局部变量和全局变量同名的时候,局部变量优先使⽤。

6. 全局变量和局部变量在内存中存储在哪⾥呢?1. 局部变量是放在内存的栈区 2. 全局变量是放在内存的静态区 3. 堆区是⽤来动态内存管理的。

   本篇文章已完结,谢谢支持哟 ^^ !!!

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

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

相关文章

.360勒索病毒的威胁:如何恢复您的数据?

引言&#xff1a; 近年来&#xff0c;网络安全威胁层出不穷&#xff0c;其中.360勒索病毒以其独特的攻击方式和广泛的传播能力&#xff0c;成为了众多企业和个人面临的重大挑战。本文将对.360勒索病毒进行深入剖析&#xff0c;并探讨应对此类病毒的有效策略&#xff0c;以帮助…

UE5入门学习笔记(六)——编译低版本插件

对于有些低版本的插件&#xff0c;可以通过此方法自己编译到高版本而无需等待插件作者更新 使用工具&#xff1a;如图所示 步骤1&#xff1a;打开cmd&#xff0c;并使用cd命令切换到此目录 步骤2&#xff1a;输入如下指令 RunUAT.bat BuildPlugin -Plugin“路径1” -Package“…

Java中的进程和线程

进程定义 进程是正在运行的程序&#xff0c;是系统进行资源分配和调用的独立单位&#xff0c;每一个进程都有它自己的内存空间和系统资源 线程的定义 线程是进程中单个顺序控制流&#xff0c;是一种执行路径 单线程&#xff1a; 一个进程如果只有一条路径则被称为单线程 多…

python学习笔记----面向对象(十)

一、什么是类 类是一个抽象的模板&#xff0c;用于创建具体的实例。可以将类理解为一个蓝图&#xff0c;它定义了一系列对象共有的属性&#xff08;数据&#xff09;和方法&#xff08;函数&#xff09;。类是对一组具有相同属性和功能的对象的抽象。例如&#xff0c;你可以定…

数据结构——循环结构:for循环

今天是星期五&#xff0c;明天休息&#xff0c;后天补课&#xff0c;然后就是运动会&#xff0c;接着是放假。&#xff08;但这些都和我没关系啊&#xff0c;哭死&#xff01;&#xff09;今天脑袋难得清醒一会儿&#xff0c;主要是醒的比较早吧&#xff0c;早起学了一会&#…

【VueUse】超越基本功能的高级 Vue 元素操作

在vue开发中我们经常需要操作DOM元素&#xff0c;从简单的添加类到动态创建元素&#xff0c;这些操作都是不可避免的。而在VueUse库中&#xff0c;Elements相关API函数为我们提供了一系列强大而灵活的工具&#xff0c;帮助我们更轻松地处理DOM元素。无论是优雅地处理元素、动态…

[XYCTF新生赛]-PWN:fmt解析(scanf格式化字符串漏洞,任意地址写)

查看保护 查看ida 这里没什么好说的 完整exp&#xff1a; from pwn import* context(log_leveldebug) #pprocess(./fmt) premote(gz.imxbt.cn,20975) backdoor0x4012BEp.recvuntil(bgift: ) printf_addrint(p.recv(14),16) print(hex(printf_addr)) libcELF(./libc-2.31.so) …

HTML5实用大全(Part.2)

引言&#xff1a; 哈喽&#xff0c;各位小伙伴们大家好呀&#xff0c;学习了上一篇关于HTML5的文章后&#xff0c;你是否对于入门HTML5有了一定的基础了呢&#xff0c;本篇博客我们将继续学习HTML5的不同标签&#xff0c;跟上队伍&#xff0c;准备出发咯&#xff01; 1.标签之…

js APIS part2

什么是事件&#xff1f; 事件是在编程时系统内发生的 动作 或者发生的事情。比如用户在网页上 单击 一个按钮 什么是事件监听&#xff1f; 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为 绑定事件或者注册…

2024年钉钉群直播回放如何永久保存

工具我已经打包好了&#xff0c;有需要的自己取一下 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.再把逍遥一仙下载器压缩包也解压一下 3.打开逍遥一仙下载器文件夹里面的M3U8…

python实验一 简单的递归应用

实验一 实验题目 1、兔子繁殖问题(Fibonacci’s Rabbits)。一对兔子从出生后第三个月开始&#xff0c;每月生一对小兔子。小兔子到第三个月又开始生下一代小兔子。假若兔子只生不死&#xff0c;一月份抱来一对刚出生的小兔子&#xff0c;问一年中每个月各有多少只兔子。 &…

软件工程全过程性文档(软件全套文档整理)

软件项目相关全套精华资料包获取方式①&#xff1a;进主页。 获取方式②&#xff1a;本文末个人名片直接获取。 在软件开发的全过程中&#xff0c;文档是记录项目进展、决策、设计和测试结果的重要工具。以下是一个简要的软件全过程性文档梳理清单&#xff1a; 需求分析阶段…

基于 AI 的数据库助手-Chat2DB

序言 现在已经开始步入 AI 时代&#xff0c;AI 产品也已经络绎不绝。今天&#xff0c;给大家介绍一款数据库的 AI 产品 —— Chat2DB。 一、什么是 Chat2DB Chat2DB 由阿里提供的一个数据库管理、数据开发、数据分析的工具&#xff0c;它是一个 AI 原生的数据库管理工具&…

Spring 当中的Bean 作用域

Spring 当中的Bean 作用域 文章目录 Spring 当中的Bean 作用域每博一文案1. Spring6 当中的 Bean的作用域1.2 singleton 默认1.3 prototype1.4 Spring 中的 bean 标签当中scope 属性其他的值说明1.5 自定义作用域&#xff0c;一个线程一个 Bean 2. 总结:3. 最后&#xff1a; 每…

JavaScript基础(三)

JS的数据类型 数据类型&#xff0b;解释 undefined 如var num;变量num没有初始值将被赋予undefined[基本数据类型]。 null 表示一个空值&#xff0c;与undefined值相等[对象]。 number 例:var num10; //整数&#xff0c;var num10.5; //浮点型。 boolean 布尔型&…

【linuxC语言】fcntl和ioctl函数

文章目录 前言一、功能介绍二、具体使用2.1 fcntl函数2.2 ioctl函数 三、拓展&#xff1a;填写arg总结 前言 在Linux系统编程中&#xff0c;经常会涉及到对文件描述符、套接字以及设备的控制操作。fcntl和ioctl函数就是用来进行这些控制操作的两个重要的系统调用。它们提供了对…

专业渗透测试 Phpsploit-Framework(PSF)框架软件小白入门教程(一)

本系列课程&#xff0c;将重点讲解Phpsploit-Framework框架软件的基础使用&#xff01; 本文章仅提供学习&#xff0c;切勿将其用于不法手段&#xff01; Phpsploit-Framework&#xff08;简称 PSF&#xff09;框架软件&#xff0c;是一款什么样的软件呢&#xff1f; Phpspl…

[数据结构]———归并排序

具体代码&#xff1a;在gitee仓库&#xff1a;登录 - Gitee.com 目录 ​编辑 1.基本思想&#xff1a; 2. 代码解析 1.分析 2.逻辑图 3.运行结果 1.基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分…

Redis__三大日志

文章目录 &#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a;Redis__三大日志 ⏱️ 创作时间&#xff1a;2024年04月30日 ———————————————— 对于MySQL来说, 有…