c++-数据类型

news/2024/11/8 23:52:50/

c++-数据类型

  • 整型
    • 取值范围与内存溢出
  • 浮点型
    • 浮点型cout
    • setf显示精读
    • 浮点数的存储机制(还要再看 )
  • 字符型
    • 转义字符
  • 字符串型 - string
    • string与C字符串
    • 字符串操作
  • bool 类型
  • I/O
    • cin/cout
      • cout控制输出
      • endl

整型

  • short : 2bytes
  • int : 4bytes
  • long
  • long : long
  • char : 1bytes
int num; // 变量声明,开辟一个内存空间
num=1; // 变量赋值

取值范围与内存溢出

可以理解为:取值范围是一个闭环(如果超过范围就按照闭环去取值 )
limits
#include <climits>
宏定义
与数据类型有关的取值范围

浮点型

float 是有效位只有6位或7位(以科学计数法表示的情况下)
声明的时候,尽量使用double类型,编译器默认也是double类型
注意运算时的精读丢失

浮点型cout

默认显示后六位,四舍五入

setf显示精读

double 和 float 显示的精读不一样


cout.setf(ios_base::fixed,ios_base::floatfield);float a=10.0/3.0; // cout默认显示小数点后六位
const float b=1.0E6;
cout<<a*b<<endl; // 显示精读不一样double c=10.0/3.0;
cout<<a*b<<endl; // 显示精读不一样

浮点数的存储机制(还要再看 )

二进制的科学计数法
整数部分和小数部分
小数部分转换成二进制要乘2,然后取整数部分
小数转成二进制:1.xxxx2E3(整数部分一定是1)
见视频

字符型

char ch='M'; // 77
int i=ch; // 77

转义字符

转义字符实际占用一个字节

宽窄字符

宽字符: 存储数据使用固定的字节数量
窄字符:存储数据使用不同的字节数量

字符串型 - string

字符串的定义

#include <string>
using namespace std;int main()
{string s1; // 默认值是空字符""string s2="hello";// 可以进行赋值string s3=s2; // 通过变量赋值// 通过构造的方式定义string s4(5,'s'); // 5个s -> "sssss"
}

string与C字符串

string字符串对象结尾没有\0
c字符串结尾有\0

string字符串可以进行赋值 (相当于深拷贝就可以了,相当于是可变对象)
c字符串 指针定义(char*)可以进行赋值,字符数组(char [])定义不可以赋值

strings.length() 计算长度
c字符串 – strlen() 计算长度

互相转化

// c转strig
#include <string> // length
#include <cstring> // strlen
char *a="hello";
string b;
b=a;
cout<<b<<endl;// string转c 
// 注意转化后是const 内容,不能被修改
string s1="hello";
const char *s2=s1.c_str();

字符串操作

  • 索引

使用索引访问 s[idx]

  • 拼接

+
使用c++运算符重载的方式,不用担心内存溢出
string类型、c字符串类型(数组、指针)、字符,都可以进行拼接

string s1="hello";
string s2="world";
char *s3="qt";
char s4[]="mfc";
char c5='@';string dst1=s1+s2;
string dst2=s1+s3;
string dst3=s1+s4;
string dst4=s1+c5;cout<<dst1<<endl;
cout<<dst2<<endl;
cout<<dst3<<endl;
cout<<dst4<<endl;
  • 插入

str.insert(pos,string)
注意第一个参数pos可能会越界

string s1="hello";
s1.insert(3,"world");
cout<<s1<<endl;
  • 删除

str.erase(pos,len),不指明len则删除到结尾
pos越界会异常,len越界会到结尾

string s1="hello";
s1.insert(3,"world");
cout<<s1<<endl;
s1.erase(3,5);
cout<<s1<<endl;
  • 提取子串

str.substr(pos,len)
pos越界会异常,len越界会到结尾

string s1="hello";
s1.insert(3,"world");
cout<<s1<<endl;string s5=s1.substr(3,5);
cout<<s5<<endl;
  • 查找

str1.find(str2,start_pos) 从str1的(下标)start_pos开始查找
str1.find(str2,end_pos) 最多找到str1的下标(end_pos)

int idx=str1.find(str2,start_pos)
int idx2=str1.rfind(str2,end_pos)
  • 其他函数
str.append()
str.at()
str.find_first_of() // 查找共同字符的索引

bool 类型

c 语言一般没有bool类型

#include <stdbool.h>
bool flag=true;

c++ 直接支持bool类型数据
注意: cout bool类型还是0、1

I/O

cin/cout

相当于数据流
cin istream类对象, cin 对于输入的内存时根据数据类型进行判断的
cout ostream类对象, <<表示把字符串发送给cout,表示插入运算符,即把字符串插入到输出流当中
属于内置对象

注意:编译器会根据上下文,判断被重载的运算符的含义

#include <iostream>
int x;
float y;
cin>>x;// 连续接收数据
cin>>x>>y;// endl
cout<<x<<endl; // 等价于\n
cout<<x<<"\n";

cout控制输出

cout 输出的默认是以10进制显示

cout<<hex; // 以十六进制显示
cout<<data<<endl;// cout<<oct // 以八进制显示 

endl

endl是一个特殊的c++符号
endl插入到输出流中,将导致屏幕光标移动到下一行的开头

cout<<endl;

endl\n

cout<<"some str\n";// 等价于
cout<<"some str" <<endl;//等价于
cout<<"some str"; 
cout<<endl;

http://www.ppmy.cn/news/3517.html

相关文章

【程序人生】卡塔尔世界杯吉祥物python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

卡塔尔世界杯吉祥物python海龟绘图&#xff08;附源代码&#xff09; 世界杯主题前端特效5个&#xff08;附源码&#xff09;程序人生 本文目录&#xff1a; 一、python turtle海龟绘图卡塔尔世界杯吉祥物 &#xff08;1&#xff09;、世界杯吉祥物“Laeeb”绘制效果图 &am…

JS之DOM

1、节点的属性&#xff08;nodeName、nodeType、nodeValue&#xff09;&#xff1a; 文档节点&#xff1a; nodeType 9nodeValue nullnodeName #document 元素节点&#xff1a; nodeType 1nodeValue nullnodeName 标签名 属性节点&#xff1a; nodeType 2nodeValue 属性值…

latex设置citation显示作者+年份

如果是bib文件分开放&#xff0c;并且每个引用都明确写了author和year&#xff0c;那么直接\citep 就可以&#xff0c;就能产生(abc et al., 2015) 这种格式, 如果你不想要圆括号&#xff0c;可以使用\usepackage[square]{natbib}, 也可以使用\setcitestyle{authoryear,open{(}…

家居类小红书达人投放总结,kol执行策略

在小红书平台上&#xff0c;许多品牌方都做了达人投放&#xff0c;但结果却反响平平&#xff0c;最后才发现是达人挑选出了问题&#xff0c;而发现这个问题的代价就是错失先机&#xff0c;也耗费大量成本来试错&#xff0c;今天为大家分享一下小红书达人投放总结以及超硬干货。…

电销机器人源码厂家哪家好

而随着人工智能的发展&#xff0c;越来越多的企业开始选择采用智能语音机器人&#xff0c;来减轻人工的压力&#xff0c;更好的服务客户&#xff0c;提高效率。 智能语音机器人 优点有哪些? 1.降低成本 企业使用智能语音机器人不仅不用担心人员流失问题&#xff0c;还能为机…

引用类型 - JavaScript 数组对象、遍历、复制、冒泡排序、选择排序、数组方法、数组去重

写在前面 哎呀呀&#xff0c;每次都是要沉淀好久好久才能更一篇文章…基本上半个月都很难出一篇&#xff0c;但还是想把这个系列做起来&#xff0c;主要是为了记录自己学习和开发的过程&#xff0c;以便在面试的时候讲项目&#xff0c;能说得头头是道(◍•ᴗ•◍) 马上就要开…

Solid.js前端新秀框架 力压 web3.js 框架

SolidJS 是什么&#xff1f;SolidJS是一个声明式、高效且灵活用于构建用户界面的 JavaScript 库。 Solid 号称拥有 JSX 语法&#xff0c;类似于 React hook 的语法&#xff0c;你可以用现代化的开发方式&#xff0c;获得性能最快的代码。 框架本身只有7 KB大小&#xff0c;无需…

Vue的四个常用选项

文章目录前言一、四大选项简介二、filters&#xff08;过滤器&#xff09;三、computed&#xff08;计算属性&#xff09;四、methods&#xff08;方法&#xff09;五、watch&#xff08;观察&#xff09;总结:前言 本文讲解了vue.js中的四个常用选项&#xff0c;4个参数选项&…