C++学习专栏【基础知识2】C++数据类型

1、内置数据类型

基本内置类型 C++为程序员提供了丰富的内置数据类型以及用户自定义数据类型。以下表格列出了七种基本的 C++ 数据类型 -

类型关键字
布尔值bool
字符char
整数int
浮点数float
双精度浮点数double
无值void
宽字符wchar_t

基本类型中的几种可以使用一个或多个类型修饰符进行修改 -

  • signed
  • unsigned
  • short
  • long

以下是一个示例,将在计算机上生成各种数据类型的正确大小。

演示示例:

#include <iostream>
using namespace std;

int main() {
   cout << "Size of char : " << sizeof(char) << endl;
   cout << "Size of int : " << sizeof(int) << endl;
   cout << "Size of short int : " << sizeof(short int) << endl;
   cout << "Size of long int : " << sizeof(long int) << endl;
   cout << "Size of float : " << sizeof(float) << endl;
   cout << "Size of double : " << sizeof(double) << endl;
   cout << "Size of wchar_t : " << sizeof(wchar_t) << endl;
   
   return 0;
}

此示例使用了 endl,它在每行后插入一个换行字符,并使用 << 操作符将多个值传递到屏幕上。我们还使用了 sizeof() 运算符来获取各种数据类型的大小。

当上述代码被编译和执行时,它会产生如下结果,这些结果可能因计算机而异 

以下表格显示了变量类型、在内存中存储值所需的内存量以及该类型变量所能存储的最大和最小值。

类型典型位宽典型范围
char1 字节-127 到 127 或 0 到 255
unsigned char1 字节0 到 255
signed char1 字节-127 到 127
int4 字节-2147483648 到 2147483647
unsigned int4 字节0 到 4294967295
signed int4 字节-2147483648 到 2147483647
short int2 字节-32768 到 32767
unsigned short int2 字节0 到 65,535
signed short int2 字节-32768 到 32767
long int8 字节-9223372036854775808 到 9223372036854775807
signed long int8 字节与 long int 相同
unsigned long int8 字节0 到 18446744073709551615
long long int8 字节-(2^63) 到 (2^63)-1
unsigned long long int8 字节0 到 18,446,744,073,709,551,615
float4 字节-
double8 字节-
long double12 字节-
wchar_t2 或 4 字节1 个宽字符

以上所示的变量大小可能会因使用的编译器和计算机不同而有所不同。

另外,以下是通过示例展示如何获取计算机上不同数据类型的大小和范围:

#include <iostream>
#include <limits>
using namespace std;

int main() {
 
   std::cout << "Int Min " << std::numeric_limits<int>::min() << endl;
   std::cout << "Int Max " << std::numeric_limits<int>::max() << endl;
   std::cout << "Unsigned Int  Min " << std::numeric_limits<unsigned int>::min() << endl;
   std::cout << "Unsigned Int Max " << std::numeric_limits<unsigned int>::max() << endl;
   std::cout << "Long Int Min " << std::numeric_limits<long int>::min() << endl;
   std::cout << "Long Int Max " << std::numeric_limits<long int>::max() << endl;
   std::cout << "Unsigned Long Int Min " << std::numeric_limits<unsigned  long int>::min() <<endl;
   std::cout << "Unsigned Long Int Max " << std::numeric_limits<unsigned  long int>::max() << endl;

   return 0;
}

此示例使用了 sizeof() 操作符获取不同数据类型的大小,并使用 std::numeric_limits 获取不同类型的最小值和最大值。

此外,代码中还介绍了 typedef 声明和枚举类型的使用方法。 typedef 可以用来创建新的类型名称,而枚举类型可用于定义一组常量,并可以为这些常量指定特定的值。

2、 typedef 声明

以使用 typedef 为现有类型创建一个新的名称。以下是使用 typedef 定义新类型的简单语法 -

typedef type newname;

例如,以下代码告诉编译器 feetint 的另一个名称 -

typedef int feet;

现在,以下声明是完全合法的,它创建了一个名为 distance 的整数变量 -

feet distance;

实践代码:

#include <iostream>
using namespace std;

typedef int feet;

int main() {
    feet distance = 5;
    cout << "Distance: " << distance << " feet" << endl;
    return 0;
}

上面的示例中,typedef int feet;feet 定义为 int 的别名。然后在 main() 函数中,使用 feet 类型创建了一个整数变量 distance 并赋值为 5。最后打印出了距离的值。

3、枚举类型

枚举类型声明了一个可选的类型名称和一组零个或多个可用作该类型值的标识符。每个枚举器都是一个其类型为枚举的常量。

创建枚举需要使用关键字 enum。枚举类型的一般形式是 

enum enum-name { name 列表 } 变量列表;

在这里,enum-name 是枚举的类型名称。名称列表是逗号分隔的。

例如,以下代码定义了一个名为 color 的颜色枚举和类型为 color 的变量 c。最后,将 c 赋值为 "blue"。

enum color { red, green, blue } c; c = blue;

默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,依此类推。但是您可以通过添加一个初始化器为名称指定特定的值。例如,在以下枚举中,green 将具有值 5。

enum color { red, green = 5, blue };

在这里,blue 将具有值 6,因为每个名称都比前一个名称大 1。

实践代码:

#include <iostream>
using namespace std;

enum Color { red, green = 5, blue };

int main() {
    Color c = blue;
    
    cout << "Value of red: " << red << endl;
    cout << "Value of green: " << green << endl;
    cout << "Value of blue: " << blue << endl;
    cout << "Value of c: " << c << endl;
    
    return 0;
}

 在上述示例中,enum Color { red, green = 5, blue }; 定义了一个名为 Color 的枚举类型。red 的默认值为 0,green 被赋值为 5,blue 没有赋值。在 main() 函数中,创建了一个 Color 类型的变量 c,并赋值为 blue。最后打印了三种颜色的值以及 c 的值。

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

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

相关文章

RabbitMQ登录控制台显示--你与此网站的连接不是私密连接

一、RabbitMQ默认账号 Note: The default administrator username and password are guest and guest. 注:默认管理员用户名和密码为guest和guest 二、自己修改过或者注册的情况 由于本人之前用过,注册过账号密码,在登录时,用户名账号有异常出现以下问题 解决方案: 因为我的rab…

使用easyExcel框架报错:服务器缺少字体

后台服务使用easyExcel框架生成表格&#xff0c;但是生成的时候报如下的错误&#xff1a; 这种报错其实就是部署服务的服务器缺少字体&#xff0c;正确的方法是安装字体。需要注意的是&#xff0c;测试环境服务器与生产环境服务器的在配置版本上可能存在差异&#xff0c;因此需…

Node.js+Express+Nodemon+Socket.IO构建Web实时通信

陈拓 2023/11/23-2023/11/27 1. 简介 Websocket WebSocket是一种在单个TCP连接上提供全双工通讯的协议。特别适合需要持续数据交换的服务&#xff0c;例如在线游戏、实时交易系统等。 Websocket与Ajax之间的区别 Ajax代表异步JavaScript和XML。它被用作一组Web开发技术&…

全汉电源SN生产日期解读

新买了一个全汉的电脑电源&#xff0c;SN&#xff1a;WZ3191900030&#xff0c;看了几次没想明白&#xff0c;最后估计SN是2023年19周这样来记录日期的。问了一下京东全汉客服&#xff0c;果然就是这样的。那大家如果在闲鱼上看到全汉电源&#xff0c;就知道它的生产日期了。

YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)

一、本文介绍 本文给大家带来的改进机制是RFAConv&#xff0c;全称为Receptive-Field Attention Convolution&#xff0c;是一种全新的空间注意力机制。与传统的空间注意力方法相比&#xff0c;RFAConv能够更有效地处理图像中的细节和复杂模式(适用于所有的检测对象都有一定的…

C语言——写一个简单函数,找两个数中最大者

#include <stdio.h>int max( int a, int b ) { return a>b ? a:b; }int main() { int a, b;printf("输入两个数:\n");scanf("%d %d", &a, &b);printf("max %d\n", max(a, b));return 0; }输出结果&#xff1a;

Python---文件

文件--- 内存中存放的数据在计算机关机后就会消失。要长久保存数据&#xff0c;就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索&#xff0c;引入了“文件”的概念。 一篇文章、一段视频、一个可执行程序&#xff0c;都可以被保存为一个文件&#xff0c;并赋予一个…

TiDB专题---1、TiDB简介和特性

什么是TiDB TiDB 是一个分布式 NewSQL 数据库&#xff0c;它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议&#xff0c;具有数据强一致的高可用特性&#xff0c;是一个不仅适合 OLTP 场景还适合 OLAP 场景的混合数据库。 TiDB 是 PingCAP 公司自主设计、研发…

pycharm编译报错处理

1.c生成工具下载 https://visualstudio.microsoft.com/visual-cpp-build-tools/ 在这里插入图片描述 pip install pycocotools

Python解释器和环境变量配置(超详细)

一、 python解释器下载 1.百度python官网并打开 官网网址&#xff1a;www.python.org/ 在这里插入图片描述 2.选择DownLoads&#xff0c;Windows并打开 3.在下图页面选择你需要的版本下载即可&#xff08;本文以python 3.10.4版本演示&#xff09; 在这里插入图片描述 二、安…

Redis集群模式

Redis集群主要有三种模式 主从复制模式&#xff08;Master-Slave&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Cluster模式 主从复制模式&#xff1a;适用于数据备份和读写分离场景&#xff0c;配置简单&#xff0c;但在主节点故障时需要手动切换。哨兵模式&…

Python使用——发送Get请求,模拟http请求 进行SSH连接服务器

前言 本篇博客是python开发的使用案例博客&#xff0c;结合一些具体的案例进行阐述&#xff0c;本篇博客主要内容是使用Python发送Get请求&#xff0c;模拟http请求&#xff0c;后面可以搞个爬虫出来&#xff0c;另外就是如何使用Python进行SSH连接服务器。 其他相关的博客文…

数据结构(超详细讲解!!)第二十六节 图(上)

1.基本概念 图&#xff08;Graph&#xff09;是一种较线性表和树更为复杂的非线性结构。是对结点的前趋和后继个数不加限制的数据结构&#xff0c;用来描述元素之间“多对多”的关系(即结点之间的关系是任意的)。 一个图G &#xff08;V&#xff0c;E&#xff09;由顶点&…

思维跳动:抖店商品怎么设置拼团?

在抖店上销售商品时&#xff0c;设置拼团活动是一种促销策略&#xff0c;可以吸引更多用户参与购买&#xff0c;并增加销量。下面将介绍一些方法和步骤&#xff0c;帮助你在抖店中设置商品的拼团活动。 一、抖店商品怎么设置拼团&#xff1f; 首先&#xff0c;选择适合的商品进…

HP1010 | 业界首款图腾柱 PFC 专用数字控制器震撼来袭!

随着节能标准和客户需求的不断提高&#xff0c;电源解决方案的效率和尺寸也在不断优化&#xff0c;设计紧凑高效的 PFC 电源是一个复杂的开发挑战。随着第三代半导体器件氮化镓和碳化硅的大范围应用&#xff0c;图腾柱无桥 PFC&#xff08;TPPFC&#xff09;应用获得极大的拓展…

Kettle连接到GBase 8s数据库

1&#xff0c;将GBase 8s数据库驱动放到kettle的lib目录下 如下图&#xff0c;在data-integration\lib下添加连接GBase 8s数据库的驱动gbasedbtjdbc.jar(视Server版本&#xff0c;增加匹配的驱动) 2&#xff0c;在 文件 -> 新建 -> 数据库连接 或者是在 转换 -> D…

Python 利用aiohttp异步流式下载文件

背景 本篇文章为小编翻译文章&#xff0c;小编在查找资料时看到的一篇文章&#xff0c;看了后感觉不错&#xff0c;就翻译过来&#xff0c;供大家参考学习 文章原文地址&#xff1a;https://www.slingacademy.com/article/python-aiohttp-how-to-download-files-using-stream…

6、Qt延时的使用

一、sleep() 1、说明 QThread类中如下三个静态函数&#xff1a; QThread::sleep(n); //延迟n秒 QThread::msleep(n); //延迟n毫秒 QThread::usleep(n); //延迟n微妙 这种方式使用简单&#xff0c;但是会阻塞线程&#xff0c;有界面时界面会卡死&#xff0c;一般在非GUI线…

Linux常用命令——cd命令

文章目录 1. 简介2. 命令参数3. 常见用法与实例3.1 基本用法3.2 使用绝对路径或相对路径3.3 使用特殊字符3.4 使用参数 4. 总结 1. 简介 cd命令是Linux系统中最基础且频繁使用的命令之一&#xff0c;用于改变当前工作目录。它是“change directory”的缩写&#xff0c;对于任何…

mybatis快速入门(基于Mapper接口编程)

1、准备数据模型&#xff0c;建库建表 CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );INSERT INTO t_emp(emp_name,emp_salary) VALUES("tom&qu…