C++ 数据类型

数据类型介绍

  • 数据类型的作用:编译器预算数据分配的内存空间大小。

ps:可以通俗理解为:数据类型是用来规范内存的开销,约定数据在内存中的格式,便于存储。

变量

变量的语法

  • 在计算机程序中,变量是用来存储数据的一个内存区域,并用一个名字来表示这个区域。

使用特点

  • 变量在使用前必须先定义,定义变量前必须有相应的数据类型;
  • 在程序运行过程中,其值可以改变;

语法说明

示例代码

#include <stdio.h>int main() {// 1. 定义1个int变量age同时赋值为18(这叫初始化),然后打印内容int age = 18;printf("%d\n", age);// 2. 修改age的内容为20,然后打印内容age = 20;printf("%d\n", age);// 3. 定义2个int变量,然后在分别赋值,然后再打印内容int a, b;a = 123;b = 256;printf("%d\n", a);printf("%d\n", b);// 4. 定义1个float类型变量height同时赋值,然后打印内容float height = 1.77;printf("%f\n", height);return 0;
}

标识符命名

通过上面的联系,变量会定义了,类型和赋值都一些了解了。但变量名字大家需要注意,变量名也叫标识符,它是用户编程时起的一个名字(变量、函数、结构体等都需要名字),为了便于后面程序中的使用,有一些命名规范我们需要遵守。

命令规范

好的命名习惯要做到见名知意,如下:

  • 大驼峰
    • 每个单词首字母大写, 例如: MyFirstName
  • 小驼峰
    • 第二个单词开始首字母大写, 例如: myFirstName
  • 下划线命名
    • 每个单词之间使用下划线连接, 例如: my_first_name

示例

背景:

班长家的房子是一个价值千万的四层别墅,别墅的房间有很多、各种家居也非常多。他所住的房间是在三楼东边的卧室,房间里有学习桌和座椅,座椅非常豪华,有2.5米高,价值一万多块。

请为班长的座椅起个名字,要求看到名字就知道是哪个座椅。

例如:

  • ThirdFloorEastRoomSeat
  • thirdFloorEastRoomSeat
  • third_floor_east_room_seat

char类型

char表示为字符类型,用于存储单个字符,每个字符变量都是由8个bit位构成,在内存中就是1个字节。

相关特性:

  • 在给字符型变量赋值时,需要用一对英文半角格式的单引号(' ')把字符括起来。
  • 字符变量在内存单元存储时,是将与该字符对应的ASCII码放到变量的存储单元中。

  • char的本质就是一个1个字节大小的整型。

#include <stdio.h>int main() {// 定义一个char类型变量,同时赋值为97,分别用%d,%c打印结果char ch = 97;printf("%d\n", ch);printf("%c\n", ch);// 定义一个char类型变量,同时赋值为'a',分别用%d,%c打印结果char ch2 = 'a';printf("%d\n", ch2);printf("%c\n", ch2);return 0;
}

布尔类型

布尔类型是一种处理逻辑的类型,其有两个值,分别是真(true)或假(false),它在内存中的长度一般只占用1个字节。

  • 早期C语言没有布尔类型数据,以0代表逻辑假,非0代表逻辑真;
  • C99标准定义了新的关键字_Bool,提供了布尔类型,或者也可以使用stdbool.h中的bool;

示例代码:

#include <stdio.h>
#include <stdbool.h>int main() {// 定义一个bool类型变量,同时赋值为true,然后打印变量的值bool flag = true;printf("%d\n", flag);// 修改上一步变量的值为false,然后打印变量的值flag = false;printf("%d\n", flag);return 0;
}

数据类型长度

存储单位说明

术语

含义

bit(比特)

一个二进制代表一位,一个位只能表示0或1两种状态。数据传输是习惯以“位”(bit)为单位。

Byte(字节)

一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。数据存储是习惯以“字节”(Byte)为单位。

1b

1bit

1B

1Byte = 8bit

1KB

1KB = 1024B

1MB

1MB = 1024KB

1GB

1GB = 1024MB

1TB

1TB = 1024GB

1PB

1PB = 1024TB

……

……

  • 示例

班长家的大别墅装了一个千兆光纤,请帮班长计算一下,班长的网速最高可以达到多少?

基本数据类型长度

数据类型的长度会受操作系统平台的影响,所以在不同平台下基本数据类型的长度是不一样的。

#include <stdio.h>int main() {// 通过sizeof打印各种类型的长度(大小)printf("char length = %d\n", sizeof(char));printf("short length = %d\n", sizeof(short));printf("int length = %d\n", sizeof(int));printf("long length = %d\n", sizeof(long));printf("float length = %d\n", sizeof(float));printf("double length = %d\n", sizeof(double));printf("long double length = %d\n", sizeof(long double));// 定义int类型变量,sizeof打印变量的大小int a;printf("a length = %d\n", sizeof(a));return 0;
}

可移植的类型

最开始我们介绍C语言是一门跨平台的编程语言,使用C语言编写的程序可以在不同的系统平台下运行,这里有一些前提,为了更好的兼容不同平台,我们在使用基本上数据类型的时候会采用可移植的类型,这些类型可以确保在不同的平台下稳定的运行。

  • C语言在可移植类型头文件 stdint.h 和 inttype.h 中规定了精确宽度整数类型,以确保C语言的类型在各系统内功能相同。

示例代码:

#include <stdio.h>
#include <inttypes.h>int main() {// 8位整型int8_t a=127;printf("%d\n", sizeof(a));// 16位整型int16_t b = 127;printf("%d\n", sizeof(b));// unsigned 无符号,没有符号位,数值为正数uint8_t c = 255;uint16_t d = 200;return 0;
}

常量

与变量不同,常量的值在程序运行时不会改变。

整型常量

100,200,-100,0

实型常量

3.14 , 0.125,-3.123

字符型常量

'a', 'b', '1'

字符串常量

"a", "ab","12356"

自定义的常量

常量的定义方式有两种:

// 预处理常量
#define PI 3.14// const常量
const double pi2 = 3.14;

示例代码:

#include <stdio.h>
// 预处理常量
#define PI 3.14int main() {// const常量const double pi2 = 3.14;// 常量不能修改,以下代码是错误的PI = 3.33;pi2 = 3.33;return 0;
}

系统定义的常量

C语言提供了一些常量库,比如有:float.h、limits.h等,这些常量同样受操作系统平台的影响会在不同的平台下不一样。

float.h:

limits.h:

#include <stdio.h>
#include <float.h>
#include <limits.h>int main() {// 打印float类型能够表示的最大值和最小值printf("%lf\n", FLT_MIN);printf("%lf\n", FLT_MAX);// 打印char类型位数以及能够表示的最大值和最小值printf("%d\n", CHAR_BIT);printf("%d\n", CHAR_MIN);printf("%d\n", CHAR_MAX);// 打印short类型能够表示的最大值和最小值printf("%d\n", SHRT_MIN);printf("%d\n", SHRT_MAX);// 打印int类型能够表示的最大值和最小值printf("%d\n", INT_MIN);printf("%d\n", INT_MAX);// 打印long类型能够表示的最大值和最小值printf("%ld\n", LONG_MIN);printf("%ld\n", LONG_MAX);return 0;
}

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

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

相关文章

安装苹果ipa的方法

1、如何生成udid udid获取工具 https://www.betaqr.com/tools 提示下载后 2、爱思助手安装苹果app mac下载爱思助手&#xff0c;数据线连接手机&#xff0c;把ipa包拖到爱思助手app应用选项里 3、新手机调试需要先选中设备&#xff0c;再注册

VMwear桥接网络正确配置+静态IP设置

1.桥接网络配置 很多时候在VMware安装完虚拟机之后&#xff0c;会发现配置的桥接网络没有起作用&#xff0c;如果是Linux下输入ifconfig发现只有ipv6的地址而没有ipv4&#xff0c;说明没有桥接没有启用成功&#xff0c;需要按照以下方式来设置 在VMware的左上角打开编辑&#…

Redis(持久化 -- RDB AOF)

持久化 通常我们认为持久化为: 重启进程/重启主机之后, 数据仍然存在不丢失 把数据存储在硬盘上 – 持久 把数据存储在内存中 – 不持久 Redis 持久化 redis 是一个内存数据库, 也就是说本身是不持久的(但是快[效率高]), 于是 Redis 提供了持久化机制 — RDB 和 AOF 二者都是对…

H.265网页无插件播放EasyPlayer.js流媒体播放器常见问题及解答

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 今天我们来汇总下用户常见的几个问题及解答。 1、EasyPlayer.js播放多路H.265视…

Android 输入法框架

输入法属于输入系统的一部分&#xff0c;区别于输入系统只能向系统产生时间&#xff0c;输入法能向系统输入具体的内容&#xff0c;下面来认识输入法的大体框架&#xff0c;以下内容参考清华大学出版社出版的《Android图形显示系统》。 输入法框架包含3个组件&#xff0c;各组件…

python画图Matplotlib和Seaborn

python画图Matplotlib和Season 一、Matplotlib1、介绍2、安装3、内容二、Seaborn1、介绍2、安装3、内容一、Matplotlib Matplotlib官网 1、介绍 Matplotlib 是一个 Python 的绘图库,用于创建高质量的二维图表和一些基本的三维图表。它广泛应用于科学计算、数据分析、工程学和…

基于springboot+vue实现的的成人教育教务系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

AI时代,搜索引擎的巨头地位恐怕不保了

兄弟们&#xff0c;你们使用搜索网站的频率有降低吗&#xff1f; ChatGPT 已经流行了一年多了&#xff0c;这期间数个大模型都发展了起来。 搜索引擎本质上也属于问答系统&#xff0c;所以&#xff0c;在大模型成熟之后&#xff0c;我使用搜索的频率越来越低了。 主要是因为…

水牛社:互联网赚钱秘籍,免费项目,你真敢要吗?

免费是最贵的。真正理解并使用这句话的只有少数人&#xff0c;今天在网上分享一下免费项目背后的逻辑&#xff0c;抛开现象&#xff0c; 本质是最重要的。 我从事互联网工作15年。不管是过去还是现在&#xff0c;总有人喜欢问有没有免费项目&#xff1f; 其实我平时懒得回答…

java基础语法(13)

1. final关键字 final概述 学习了继承后&#xff0c;我们知道&#xff0c;子类可以在父类的基础上改写父类内容&#xff0c;比如&#xff0c;方法重写。那么我们能不能随意的继承API中提供的类&#xff0c;改写其内容呢&#xff1f;显然这是不合适的。为了避免这种随意改写的情…

C++初阶---vector(STL)

1、vector的介绍和使用 1.1、vector的介绍 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是…

MATLAB 普通场景的道路点云分割 (方法一)(56)

MATLAB 普通场景的道路点云分割(方法一) (56) 一、分割原理二、算法实现1.代码一、分割原理 基于这样一个认识:大部分情况下,点云都是分块去处理的,在某块点云场景中,点云区域不大,地面基本是水平分布的,不会有较大的坡度,因此将其认为是一个法向与Z轴大致平行的平…

Python空间分析简明教程

数据世界是一个活生生的、会呼吸的事物。 当一个城市的犯罪率上升时&#xff0c;这是因为现实世界中有人在某个地方犯罪。 有警察局、住宅区和商业区、人口密度以及可以与位置相关联的人的地方。 所有这些东西都存在于数据框和表格之外的世界中。 空间分析使数据科学家能够回答…

实战环境-Activiti7从入门到专家(4)

背景 对于activiti7 已经有了感性认知&#xff0c;并且已经获得了源代码&#xff0c;梳理了核心的API。后面还有大量的内容&#xff0c;包括BPMN规范的落地&#xff0c;但是我们不能只停留在理论层次&#xff0c;需要从实际罗德的内容展开&#xff0c;因此需要构建实战环境。 …

WD西部数据正式通知客户:HDD与NAND继续涨价!

人工智能&#xff08;AI&#xff09;市场的快速增长引发了对数据存储的巨大需求。加之去年因市场环境因素导致HDD制造商减产&#xff0c;自去年下半年以来&#xff0c;高容量HDD供不应求&#xff0c;致使整体HDD价格显著上涨。据TechNews援引的行业消息指出&#xff0c;自去年第…

[每日算法 - 阿里机试] leetcode739. 每日温度

入口 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/daily-temperatures/descr…

windows安装charles抓包iphone

安装charles抓包iphone charles基础介绍windows安装 charles基础介绍 Charles 是在 PC 端常用的网络封包截取工具&#xff0c;在做移动开发时&#xff0c;我们为了调试与服务器端的网络通讯协议&#xff0c;常常需要截取网络封包来分析。除了在做移动开发中调试端口外&#xf…

不允许在constexpr函数中进行声明

这是我用pycharm在windows系统下复现sfm深度学习网络(Deep Two-View Structure-from-Motion Revisited&#xff09;遇见的问题&#xff0c;复现时有段代码pytorch扩展cuda/c&#xff0c;pycharm中出现C标准相关的报错如下&#xff1a; 在网上查找很久无果&#xff0c;后面通过…

nginx配置实例-高可用主备模式

目录 什么是高可用&#xff1f; 解决的问题&#xff1f; 双机热备方案 keepalived是什么&#xff1f; 故障转移机制 环境准备 一、实现过程 1.1安装keepalived 安装好以后&#xff0c;将keepalived程序开启&#xff0c;并且加入到开机启动项中 1.2修改主机&#xff08;…

winform入门篇3 -- 手工创建窗口

手工创建窗口 Form, 窗口 可以手工创建一个窗口类 class MyFrom : Form { } 1.创建一个windows 窗体应用 这样就自动创建了一个窗体应用Form1 现在不使用这个自动创建的&#xff0c;手工写一个 2.手动创建 1.删除Form1.cs 2.添加 新建MyForm 类 让该类继承Form 在构造…