C++基础——数据类型、数据类型强制转换、sizeof关键字、输入输出

前言

该文章是我学习后整理的,如有错误或者建议请多多指教!!

在C++初始化可以是:

数据类型 变量名{ }

这是c++11后更加通用的初始化方式,在以下的代码的初始化时我都是以这种方式初始化。

数据类型

boolean(布尔类型)

占一个字节的大小,只有两个值

(1)true:真(就是1)

(2)false:假(就是0)

非零即为真 

#include<iostream>
using namespace std;
int main()
{
	bool a = true;
	cout << a << endl;  //该打印出来的是  1
	a = 3.3;
	cout << a;          //该打印还是      1
	return 0;
}

character(字符类型)

9cb8f87923fd4ff48bbb575d97983869.png

Integer (整形)

5e681d54c5084af0814b0bb81cd09667.png

关键unsigned拓展了整整变量的正数范围,但是不允许其存储负值。

C++标准保持:

1 == sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)

float/double  (浮点型)

88fd67a01f854640935fa75325a58cea.png

double(双精度实型)能够增加浮点型数据表示数的范围精度。

auto(自动推导数据类型)

auto 是一个类型推导关键字,用于在声明变量时自动推断其类型。

使用 auto 可以简化代码,使代码更易于阅读和维护,特别是在处理复杂类型或模板编程时。

auto x = 5; // x 是 int 类型
auto y = 3.14; // y 是 double 类型

补充:constexpr关键字(定义一个符号常量)

用于指定一个变量、函数或对象的值在编译时是常量表达式。

这意味着这些值在编译阶段就已经确定,且不可改变。

sizeof关键字

作用:统计数据或者该变量所占用的内存空间的大小

用法:sizeof(数据类型或者变量名)或着 sizeof 变量名

如果是数据类型那就必须要括号

sizeof的返回值是size_t,size_t是一个系统最大无符号的整数类型

通常是unsigned int 或者unsigned long的别名

补:在C语言可以用printf打印sizeof用%zu

#include<iostream>
using namespace std;
int main()
{
    int a{33};
    cout<<sizeof a<<endl;
    cout<<sizeof(a)<<endl;
    cout<<sizeof(int)<<endl;
    return 0;
}

运行结果是:

4

4

4

数据类型强制转换

C++提供了以下四种类型转换操作符:

1.static_cast 

用于非多态类型的转换,如基本数据类型之间的转换、空指针和非类型之间的转换、类之间的转换(只要类定义了相应的转换函数或构造函数)等。

#include<iostream>
using namespace std;
int main()
{
    double a{33.332};
    int z=static_cast<int>(a); 
    cout<<z;
    return 0;
}

运行结果:

33

2.dynamic_cast 

主要用于类层次结构中基类和派生类之间的安全转换。它会在运行时检查转换的有效性。

3.const_cast

 用于修改类型的const或volatile属性。

4.reinterpret_cast

提供最低级别的转换,它可以重新解释位模式。这种转换通常不太安全。

收缩类型转化

收缩类型转化是指将一个较大的数据类型(通常具有更大容量或更高精度)赋值或转换为一个较小的数据类型(容量较小或精度较低),并且这种转换可能导致原始值的部分信息丢失。

收缩转换通常涉及到潜在的数据截断或精度损失风险,因为目标类型可能无法完全容纳源类型的所有可能值。

#include<iostream>
int main()
{
	int a{ 33 };
	char b = {a};
	return 0;
}
//会提示错误因为发生了收缩类型转化

//如果修改为则正确
#include<iostream>
int main()
{
	int a{ 33 };
	unsigned char b = {a};
	return 0;
}

输入输出

insertion 流插入符

<<

cout默认输出六位数!

extraction 流提取符

>> 输入数据时 会忽略 回车 空格 制表符

cin自动过滤tab enter 空格键

不过滤空白字符即将空白字符读入ch中

使用流提取符: std::cin >> std::noskipws >> ch ; 

使用函数 get(): std::cin.get(ch) ;

#include<iostream>
using namespace std;
int main()
{
    int a{};
    cin>>a;
    cout<<a;
    return 0;
}

manipulator 流操纵符 

std::setw()

设置宽度 只能生效一次,只影响后面一个数据(仅对输出流的下一数据项起作用)

设置下一个输入或者输出域的最小宽度(数据域在屏幕上所占的列数,即字符个数)

如果设置域宽太小不足显示一个数据,那么系统会自动调整域宽使其能够显示数据的                      所有位数

std::setfill()

设置填充 就是把空格变成其他字符

std::setprecision()

小数点位数 默认输出6个数值(包括整数和小数的数值)

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    double a{};
    cin>>a;
    cout<<setprecision(4)<<a;
    return 0;
}

在使用有圆括号的带有参数的流操作符要带上#include<iomanip>

std::fixed

浮点数用定点表示法输出

fixed的用法

不用fixed的时候

#include<iostream>
using namespace std;
int main()
{
    double a{}; 
    cin>>a;         
    cout<<a;
    return 0;
}

cout输出double默认是六位数

如果整数部分超过了六位数那么就会进行科学计数法

如果小数部分加整数部分超过了六位数,整数没有超过六位数,那么就会进行四舍五入

如果小数部分加整数部分没有超过了六位数,那么输入完整的数据

用fixed的时候

#include<iostream>
using namespace std;
int main()
{
    double a{};
    cin>>a;
    cout<<fixed<<a;
    return 0;
}

fixed指定浮点数使用小数点输入出

默认是输出小数点后六位,多出来就四舍五入

一般情况下fixed和setprecision一起使用可以指定小数点几位

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    double a{};
    cin>>a;
    cout<<fixed<<setprecision(9)<<a;
    return 0;
}

在括号里输入要保留的小数点位数

如输入2323.12345678999

则输出2323.123456790

std::scientific

浮点数用科学计数法输出

一般情况科学计数法保存小数点后六位,不够的话用0来补

std::left

左对齐

std::right

右对齐 (默认为右对齐)

std::endl

换行 效果和"\n"一样,速度比"\n"慢 endl是再刷新流所以很慢

C++20新标准format,更加简便的输入输出和格式化

C++的format函数_c++ format-CSDN博客

对于以上内容参考了这两个网站

cppreference.com

www.runoob.com

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值