C++学习day--05 C++数据类型

news2024/10/7 12:17:17

1、项目需求:实现黑客攻击系统菜单打印

 实现:

#include <iostream>
#include <Windows.h>
int main( void ) {
std::cout << "1. 网站 404 攻击 " << std::endl;
std::cout << "2. 网站篡改攻击 " << std::endl;
std::cout << "3. 网站攻击记录 " << std::endl;
std::cout << "4.DNS 攻击 " << std::endl;
std::cout << "5. 服务器重启攻击 " << std::endl;
system( "pause" );
return 0;
}

 需求增加:没有输入账号登录, 就直接显示功能菜单. 应该先让用户输入账号并登录

实现:

#include <iostream>
#include <Windows.h>
int main( void ) {
char name;
int pwd;
std::cout << " 请输入账号: " ;
std::cin >> name;
std::cout << " 请输入密码: " ;
std::cin >> pwd;
/*
std::cout << "1. 网站 404 攻击 " << std::endl;
std::cout << "2. 网站篡改攻击 " << std::endl;
std::cout << "3. 网站攻击记录 " << std::endl;
std::cout << "4.DNS 攻击 " << std::endl;
std::cout << "5. 服务器重启攻击 " << std::endl;
*/
system( "pause" );
return 0;
}

 不用懂代码,只是让你跟着敲,熟悉头文件的名字,熟悉主函数。

2、C++数据类型

已经是用过的数据类型有:字符串类型、整数类型

2.1什么是数据类型?

不同类型的人, 思考问题,处理问题的方式都不一样。计算机中的数据,也分成很多种类型:
intusigned intchar
usigned charlonglong long
unsigned longshortunsigned short
floatdouble各种指针类型
枚举类型struct结构体类型union联合类型
boolstring

其中C++完全支持C语言的各种数据类型,不同数据类型的区别:

1. 表示意义不同
2. 占用内存不同
3. 表示的范围不同
4. 使用方法不同
数据类型使用不当,将导致严重的后果。
1. 对于程序员:隐藏 BUG,建议载刷题的时候,浮点数用double,整数用long long或者int
2. 对于系统:隐藏灾难,因数据类型使用不当,产生数据溢出,导致阿丽亚娜 5 型运载火箭自爆

3、变量

变量,不是数学中的变量,程序在运行时,需要保存很多内容常常变化的数据。

比如,射击类游戏中不断变化的“分数”。 世界中的芸芸众生:数据在大量变量之间“计算”、“交换”。 变量是处理数据的基本实体。变量是什么?
变量,是内存中的一块存储空间,即一小块内存
变量和数据类型有什么关系?
变量,是一个盒子,盒子里保存了“数据” ,数据又分成很多“类型”(数据类型)
=> 变量的类型,就是变量中数据的类型。
=> 变量在定义(创建)时,必须先指定它的类型。
【相当于:制作一个盒子时,必须先确认这个盒子是用来装什么的】
=> 1 个变量只有 1 个类型,而且不能改成其他类型

变量的定义形式:

 

定义形式 1
int x;
int y;
定义形式 2 ( 不推荐)
int x, y;
定义形式 3 :(定义的时候,设置一个初始值)
int x = 100;
深度剖析:
int a; // 定义了一个变量
a = 100;
内存原理:
内存的存储单位 - “字节”
内存的存储单位,是字节。 一个字节,包含 8 位二进制位。
数据在内存中存储的模式:
大端模式:低字节存放到高地址中
小端模式:低字节存放到低地址中。
一般 PC 机都是小端方式,大端方式对人来
看友好,小端方式对机器来看友好。参考
《计算机组成原理》
变量名的命名规范
1) 只能包含 3 种字符(数字、大 / 小写字母,下划线)
2) 不能以数字开头(即,只能以字母或下划线开头)
int 2name; // 非法
3) 不能和“关键字”同名(
c 语言内部已经使用的“名称”),比如类型名 int
变量名的最大长度, C 语言没有规定。
最大长度限制,取决于编译器,一般都在 32 以上。
变量名,最好“ 顾名思义 ”,即见名知意,不用使用汉语拼英的简写 !
比如:用 name 表示姓名,用 power 表示功率。
命名风格 :
小驼峰命名:如果只有一个单词则全
部小写,如果有多个单词,则从第二
个单词开始,所有单词首字母大写。
eg:studentAge
大驼峰命名:如果只有一个单词,首
字母大写即可,如果有多个单词,则
每个单词首字母大写即可。
1 )下划线风格
int student_age; (一般用于变量名、函数名 )
2 )小驼峰风格
int studentAge; (一般用于变量名、函数名 )
1 )大驼峰风格
class StudentAge; ( 一般用于“类名” )
2 )全部大写 ( 一般用于宏 )
#define MAX_AGE 30
注意:
宏在预处理的时候就被替换成
相应的数据了。
请忘记“匈牙利命名法”(属性 + 类型 + 对象描述),这种命名已被丢弃。
注意:在编程语言中,一般都可以以 $ 符号开头 ,这个企业面试容易问到,只是一般不 用$ 开头,所以把这个忽略了。

4、整形

原始人,使用结绳计数,这个“数”就是整数
int 类型
使用最多的整数类型
在内存中占 4 个字节
表示范围: - (2 31 次方 ) ~ 2 31 次方 -1 【正负 21 亿左右】
长整形 long
long 也就是 long int
可用来存储更大的整数。
32 位系统上,占 4 个字节,和 int 相同

64 位系统上,占 8 个字节【正负 9 百亿亿左右】,在VS编译器上不管在32还是64位平台均和int范围一样,为了统一,以后长整型都用long long类型

长长整形 long long
用来存储整数。
在内存中占 8 字节。
很少使用,仅用于特殊的计算。
long long 类型最大值为:
9223372036854775807
即九百亿亿多。
短整形 short
用来存储整数。
在内存中占 2 字节。
用于存储小范围的整数
表示范围: - (2 15 次方 ) ~ 2 15 次方 -1 【正负 3 万多】
无符号类型, 铁公鸡 - 概不赊欠 - 没有负数
unsigned int
unsigned long
unsigned long long
unsigned short
最小值都是 0 , 最大值是对应的有符号数的 2 倍
经典用法:
unsigned short port; // 用来表示网络通信的端口号(0-65535)
unsigned int num; // 表示编号(0 到四十多亿)
字符类型, 用于单个字符的数据类型
char
某学员的字母故事 .
单个字符:
‘0’ ‘1’ ‘2’ ‘3’ ...... ‘9’
‘a ‘b’ ‘c’ ‘d’ ...... ‘z’
‘A’ ‘B’ ‘C’ ‘D’ ...... ‘Z’
‘,’
‘-’
‘!’ ‘#’
.......
单个字符常量, 要求用‘’括起来
字符类型 char
一个字节。
char name = ‘a’;
内存示意图:

 

字符的实际表示:
所有的字符,使用对应的 ASCII 值来存储。 为什么?(因为计算机中只能存储 0 1 的组合)
ASCII 码,使用 1 个字节(包含 8 个二进制位,即 8 0 1 的组合)
比如:’A’ , 0100 0001 来表示, 就是 65, ‘B’, 用 0100 0010 来表示, 就是 66
ASCII码表:

 char name ='a'

char name = ‘a’;
等效于:
char name = 97;
char 类型的另一种用法
用来表示小范围的整数( -128 ~ 127
不过现在开发时,小范围的整数,也常常直接用 int 类型。
实例:
int x = 0;
x = ‘a’ + 1; // 97 + 1
注意 :
1 ‘1’ 的区别 .
int x = 1;
char y = ‘1’; //49

5、浮点型:用于精确计算的数据类型(浮点型)

需要精确计算的数学、工程应用,用整数类型不合适。
生活中的 敏感数据
float 类型(单精度浮点类型)
用来存储带小数部分的数据。 在内存中占用 4 个字节
表示范围: -3.4*10^38 +3.4*10^38 不需记忆
精度: 最长 7 位有效数字 (是指 7 10 进制位)
float y = 1.123456789;
// 精度只能取值到 1.1234568, 在第 7 位(整数部分不算)是四舍五入后的值。

 float 类型的存储方式:

学过计算机组成原理的都知道,这是 经典的IEEE754 标准存储浮点数。科 班出生的同学一定要掌握,不然学到 深处跟不上。
符号位: 0 代表正数, 1 代表负数
阶码: 指数 +127
符号位 尾数 * 2 ^ ( 阶码 -127)
转化过程:(了解)
float x = 13.625;
13.625 的转化:

 阶码用移码表示,位数用原码表示,隐藏一位1,有效位数为24位,因此把int型转为float类型可能会有精度丢失。实际存储如下:

double 类型(双精度浮点类型)
用来存储带小数部分的数据。
8 个字节
具体的存储方式和 float 相似 .

 

有效位数为53位。 

表示范围: -1.7*10^308~1.7*10^308 不需记忆
精度: 最长 16 位有效数字 (是指 16 10 进制位)
double y = 1.12345678901;
浮点类型的常量
带小数的常量默认都是 double 类型
3.14 double 类型
3.14f 强制指定是 float 类型
注意,编程的时候,给 float类型变量赋值时,后 面要加上F ,这样写更加规 范,不加F 默认是 double 类型,会发生便宜警告。
可以用 科学计数法 表示浮点类型的常量
1.75E5 1.75 e5
1.75E5 就是 1.75 乘以 10 5 次方 (100000), 175000.0
注意:
1 int 类型的常量
1.0 double 类型的常量
小案例,浮点数据的输出控制
#include<iostream>
#include<Windows.h>
using namespace std;
int main(void){
double value = 12.3456789;
// 默认精度是 6,所以输出为 12.3457
//(默认情况下,精度是指总的有效数字)
cout << value << endl;
// 把精度修改为 4, 输出 12.35, 对最后一位四舍五入
// 精度修改后,持续有效,直到精度再次被修改
cout.precision(4);
cout << value << endl;
// 使用定点法, 精度变成小数点后面的位数
// 输出 12.3457
cout.flags(cout.fixed);
cout << value << endl;
// 定点法持续有效
// 输出 3.1416
cout << 3.1415926535 << endl;
// 把精度恢复成有效数字位数
cout.unsetf(cout.fixed);
cout << value << endl; //输出 12.35
cout << 3.1415926535 << endl; //输出 3.142
system("pause");
return 0;
}

这个案例是浮点数打印的经典案例,必须自己手动敲牢牢掌握。

 

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

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

相关文章

实验四 基于PPTP的远程VPN实现【网络安全】

实验四 基于PPTP的远程VPN实现【网络安全】 前言推荐实验四 基于PPTP的远程VPN实现使用&#xff1a;配置CentOS PPTP服务端配置CentOS PPTP客户端常见问题浏览器无法打开网页 最后 前言 2023-5-7 23:10:12 以下内容源自《【网络安全】》 仅供学习交流使用 推荐 第27节 远程…

TCP三次握手/四次挥手

TCP三次握手/四次挥手 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手 任何基于TCP的应用&#xff0c;在发送数据之前&#xff0c;都需要由TCP进行三次握手进行连接 握手流程&#xff1a; 三次握手原理 第1次握手&#xff1a;客户端发送一个带有SYN&#…

【蓝桥杯国赛真题26】Scratch队列练习 少儿编程scratch图形化编程 蓝桥杯省赛真题讲解

目录 scratch队列练习 一、题目要求 编程实现 二、案例分析 1、角色分析

2018年下半年软件设计师下午试题

试题四&#xff08;15分&#xff09; 给定一个字符序列Bb1b2….bn&#xff0c;其中bi∈{A,C,G,U}。B上的二级结构是一组字符对集合S{(bi,bj)},其中i,j∈{1,2,….,n}&#xff0c;并满足以下四个条件&#xff1a; &#xff08;1&#xff09;S中的每对字符是(A,U),(U,A),(C,G)和…

【网络】-- IP协议

应用层&#xff08;http、https&#xff09;&#xff1a; 数据的使用。传输层&#xff08;UDP、TCP&#xff09;&#xff1a;网络通讯的细节&#xff0c;将数据可靠的从A主机跨网络送到B主机。网络层&#xff08;IP&#xff09;&#xff1a;提供一种能力&#xff0c;将数据从A主…

如何让任何小程序都支持在windows系统中打开?

随着小程序的发展&#xff0c;出现了越来越多小程序在PC端打开的需求。很多程序员同行都想了解&#xff1a;小程序支持在windows系统、mac、统信UOS等桌面操作系统中打开吗&#xff1f; 答案当然是&#xff1a;可以&#xff01; 本文就基于作者自身的经验&#xff0c;给大家介…

IPWorks SSH 2022.0.8505 C++ Edition Crack

IPWorks SSH 2022.0.8505 C Edition 轻松将安全外壳 &#xff08;SSH&#xff09; 安全性集成到您的互联网应用程序中。IPWorks SSH 库包括支持 SSH 的客户端、服务器和代理组件&#xff0c;支持强 SSH 2.0 加密和高级加密。 SSH库 SSH 文件传输和通信 借助 IPWorks SSH&#x…

【嵌入式环境下linux内核及驱动学习笔记-(10-内核内存管理)】

目录 1、linux内核管理内存1.1 页1.2 区1.2.1 了解x86系统的内核地址映射区&#xff1a;1.2.2 了解32位ARM系统的内核地址映射区&#xff1a; 2、内存存取2.1 kmalloc2.1.1 kfree2.1.2 kzalloc 2.2 __get_free_page函数族2.2.1 free_page2.2.2 __get_free_pages()2.2.3 free_pa…

20230502 - 二叉树1 | 二叉树理论基础、二叉树的递归遍历

1、二叉树理论基础篇 二叉树可以链式存储&#xff0c;也可以顺序存储。 用数组来存储二叉树如何遍历的呢&#xff1f; 如果父节点的数组下标是 i&#xff0c;那么它的左孩子就是 i * 2 1&#xff0c;右孩子就是 i * 2 2。 深度优先遍历 前序遍历&#xff08;递归法&…

Android 页面滑动悬浮资源位动画+滑动监听解决方案

一、介绍 在日常业务开发过程中&#xff0c;我们有好多资源位悬浮在页面上&#xff0c;特别是电商以及促销页面&#xff0c;有些公司恨不得把整个页面像叠汉堡一样&#xff0c;一层一层加内容&#xff0c;目的是想让更多的人通过他们的资源来完成更便捷的操作。 但是资源是会覆…

HarmonyOS版的“抖音”长啥样?有图有真相

“鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”系列课程是面向HarmonyOS实战的视频教程&#xff0c;该课程会通过构建一个真实的短视频App来向读者展示HarmonyOS的全过程。 本节将演示基于HarmonyOS短视频App的核心功能。通过了解该App的功能&#xff0c;也能初步对本课程的内…

C++——类和对象(4)

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月8日 内容&#xff1a;C类和对象内容讲解 目录 前言&#xff1a; 1.操作符重载&#xff08;续&#xff09;&#xff1a; 前置和后置&#xff1a; 日期减日期&#xff1a; <<操作符&#xff1a; 结尾&#xff…

顶级白帽黑客必备的十大黑客技术

1.熟悉Linux系统和命令行操作&#xff1a; Linux是黑客的基石&#xff0c;几乎所有黑客工具和技术都是在Linux平台上运行的&#xff0c;熟悉Linux系统和命令行操作是必须的。 2.掌握网络协议和TCP/IP模型&#xff1a; 了解TCP/IP模型、网络协议和通信流程是黑客攻击的基础&a…

Python-exe调用-控制台命令行执行-PyCharm刷新文件夹

文章目录 1.控制台命令行执行1.1.os.system()1.2.subprocess.getstatusoutput()1.3.os.popen() 2.PyCharm刷新文件夹3.作者答疑 1.控制台命令行执行 主要三种方式实现。 1.1.os.system() 它会保存可执行程序中的打印值和主函数的返回值&#xff0c;且会将执行过程中要打印的…

Diesel 基础

Diesel 2.0.4 官网 github API Documentation 一个安全的&#xff0c;可扩展的ORM和Rust查询构建器 Diesel去掉了数据库交互的样板&#xff0c;在不牺牲性能的情况下消除了运行时错误。它充分利用了Rust的类型系统来创建一个“感觉像Rust”的低开销查询构建器。 支持数据库…

操作系统基础知识介绍之可靠性与可用性(包含MTTF、MRBF、MTTR等)

计算机是在不同的抽象层上设计和构建的。 我们可以通过计算机递归地下降&#xff0c;看到组件将自身放大为完整的子系统&#xff0c;直到我们遇到单个晶体管。 尽管有些故障很普遍&#xff0c;例如断电&#xff0c;但许多故障仅限于模块中的单个组件。 因此&#xff0c;一个模块…

Python每日一练:小艺的口红(暴力、二分、图论三种方法)代写匿名信

文章目录 前言0、题目一、暴力查找二、二分查找三、有序二叉树总结&#xff08;代写匿名信&#xff09; 前言 很明显小艺的口红问题是考的是查找算法&#xff0c;对于这种一次性查找&#xff0c;直接暴力就行了&#xff0c;当然咱是为了学习&#xff0c;所以用来练练各种查找&…

【Linux】基础IO_文件系统

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【C/进阶】如何对文件进行读写&#xff08;含二进制&#xff09;操作&#xff1f; 【Linux】基础…

【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师

ElasticSearch 分词器 作者: 博学谷狂野架构师GitHub&#xff1a;GitHub地址 &#xff08;有我精心准备的130本电子书PDF&#xff09; 只分享干货、不吹水&#xff0c;让我们一起加油&#xff01;&#x1f604; 概述 分词器的主要作用将用户输入的一段文本&#xff0c;按照一定…

二十一、线索转换1:点击转换按钮加载信息、搜索市场活动

功能需求 *在线索转换页面,展示:fullName,appellation,company,owner 流程图 代码实现 1.ClueMapper /*** 通过id查询线索详情* param id 线索id* return 对应id的线索*/Clue selectClueForDetailById(String id); ClueMapper.xml <select id"selectClueForDetailByI…