C++——处理数据入门

一 简单变量

1、数据类型的长度:

#include<iostream>
#include<climits>

int main() {
	using namespace std;
	int n_int = INT_MAX;
	short n_short = SHRT_MAX;
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;

	cout << "int is " << sizeof n_int << " bytes" << endl;
	cout << "short is " << sizeof n_short << " bytes" << endl;
	cout << "long is " << sizeof n_long << " bytes" << endl;
	cout << "longlong is " << sizeof n_llong << " bytes" << endl;
	cout << endl;

	cout << "Maximum values: " << endl;
	cout << "int is " << n_int << " bytes" << endl;
	cout << "short is " << n_short << " bytes" << endl;
	cout << "long is " << n_long << " bytes" << endl;
	cout << "longlong is " << n_llong << " bytes" << endl;

	cout << "Minimum int value: " << INT_MIN << endl;
	cout << "bit per byte = " << CHAR_BIT << endl;
	return 0;
}

2、预处理器方式

  • include和#define都是预处理器编译指令,但是#define是c语言遗留下来的,在一些设计为C/C++通用的头文件中使用。然而 c++有一种更好的创建符号常量的方法:使用关键字const。

3、C++11的初始化方式

int rose{7}
int rose = {7}

int rose = {}
int rose{}

这是一种通用的初始化方法,大括号使得变量的赋值可以是不同的类型。

  • 不推荐

4、无符号类型

扩大了数据可存储的最大值(翻倍),且为非负数。

for example: short 存储范围-32768~32767,unsigned short 存储范围为0~65535

5、cout输出控制符:进制转换

#include <iostream>
using namespace std;
int main() {
	int chest = 42;
	int waist = 42;
	int inseam = 42;

	cout << "chest = " << chest << " decimal for 42" << endl; //cout输出默认为十进制

	cout << hex;//十六进制
	cout << "waist = " << waist << " hexadecimal for 42" << endl;

	cout << oct;
	cout << "inseam = " << inseam << " octal for 42" << endl;
}

二 浮点数

1、精度问题

浮点数:float,double,long double的精度都比整型低,且运算速度比整型慢。

一般用double双精度,而不是float,因为float能显示的位数实在有限。

2、浮点常量默认为double类型

3、类型转换

3.1 转换行为:

转换问题
大浮点型->小浮点型精度降低
浮点型->整型截取整数部分,舍弃小数部分,可能存储溢出
大整型–>小整型溢出取值范围,通常只复制右边的字节

复杂的类型转换:使用{},在初始化时进行转换。

3.2 表达式中的类型转换

运算转换规则
不同类型混合较小的类型转换为较大的类型
整型运算进行运算时会自动转换为int型进行计算之后再转换为原类型。
整型提升小->大
  1. 如果有一个操作数的类型是long double,则将另一个操作数转换为long double。
  2. 否则,如果有一个操作数的类型是double,则将另一个操作数转换为double。
  3. 否则,如果有一个操作数的类型是float,则将另一个操作数转换为float。
  4. 否则,说明操作数都是整型,因此执行整型提升。
  5. 在这种情况下,如果两个操作数都是有符号或无符号的,且其中一个操作数的级别比另一个低,则转换为级别高的类型。
  6. 如果一个操作数为有符号的,另一个操作数为无符号的,且无符号操作数的级别比有符号操作数高,则将有符号操作数转换为无符号操作数所属的类型。
  7. 否则,如果有符号类型可表示无符号类型的所有可能取值,则将无符号操作数转换为有符号操作数所属的类型。
  8. 否则,将两个操作数都转换为有符号类型的无符号版本

类型级别:由高到低:有符号整型long long, long, int, short, signed char;无符号整型与有符号整型相同。类型char,signed char,unsigned char的级别相同。bool类型的级别最低。

3.3 传递参数时的转换:类型转换由函数原型控制

4、强制类型转换

上述转换为计算机的隐式转换,强制转换为显式。表达式有以下两种:

(typename) value //C语言用法
typename (value) //C++用法

示例代码

int main() {
	int auks, bats, coots;

	auks = 19.99 + 11.99;
	bats = (int)19.99 + (int)11.99;
	coots = int(19.99) + int(11.99);

	cout << "auks = " << auks << ",bats = " << bats;
	cout << ",coots = " << coots << endl;

	char ch = 'Z';
	cout << "ch的int型为:" << int(ch) << endl;
	cout << static_cast<int>(ch) << endl;//static_cast是C++中四种强制类型转换运算符之一,可以进行数值类型转换
	return 0;
}

5.auto声明

auto是C++中重新进行了定义,可以用于根据初始值类型推断变量的类型。,但是在简单初始化中,自动类型推断可能会出错。只有在处理复杂类型时,auto的优势才能显现出来。

能显现出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星猫仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值