IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【一起学C++】变量、基本类型、操作符 -> 正文阅读

[C++知识库]【一起学C++】变量、基本类型、操作符

目录

常见的数字类型

有符号与无符号

类型范围

附默认值

类型转换

赋值关系描述

字面值与进制描述

转义字符

操作符

运算符优先级


常见的数字类型

类型描述示例
voidvoid常用表示方法没有返回值
bool表示是与非,条件符合/条件不符合。bool b {true};

char
unsigned char
signed char

单个字符char ch {'c'};
wchar_t宽字符(大小取决于编译器)wchar_t w {L'm'};
char8_t

8位Unicode编码的字符。

c++20以上支持

char8_t c8 {u8'm'};
char16_t16位Unicode编码的字符。char16_t c16 {u'm'};
char32_t32位Unicode编码的字符。char32_t c32 {U'm'};
std::byte单字节std::byte b {8};

short

短整型(一般2字节)

short s {10};

unsigned short

无符号短整型(一般2字节)

表示非负数

unsigned short s {12U};

int整型(一般4字节)

int i {-7};

unsigned int

无符号整型(一般4字节)

表示非负数

unsigned int i {10U};
long长整型(一般4字节)

long i {123L};

unsigned long

无符号长整型(一般4字节)?

表示非负数

unsigned long i {123UL};
long long超长整型(一般8字节)?

long long i {123LL};

unsigned long long

无符号超长整型(一般8字节)

表示非负数?

unsigned long long i {140ULL};
float单精度浮点型,最低6位小数float f {7.2F};
double双精度浮点型,最低10位小数double d {3.14};
long double长双精度浮点型,最低10位精度long double d {16.98L};

有符号与无符号

除bool, wchar_t, char16_t. char32_t外,上述类型均有无符号类型。

有符号:存在正负值,数字范围较小,如8bits的数字范围为-127~127,大多数机器支持-128~127

无符号:全是正数或0,所有的位都用来表示数值,例如8bits的数字范围为0~255

int, short, long, and long long均是有符号的,其对应的无符号表示为:

signedunsigned
intunsigned int
shortunsigned short
longunsigned long
long longunsigned long long

对于char, 其实存在两种类型,包括signed char和unsigned char, 至于哪种是等价于char的,取决于编译器。

类型范围

JAVA中有Integer.MAX_VALUE的查询,类似的c++存在numeric_limits:

cout << "int:\n";
cout << format("Max int value: {}\n", numeric_limits<int>::max());
cout << format("Min int value: {}\n", numeric_limits<int>::min());
cout << format("Lowest int value: {}\n", numeric_limits<int>::lowest());

cout << "\ndouble:\n";
cout << format("Max double value: {}\n", numeric_limits<double>::max());
cout << format("Min double value: {}\n", numeric_limits<double>::min());
cout << format("Lowest double value: {}\n", numeric_limits<double>::lowest());

max(), min(), lowest()分别查询到当前类型的最大值,最小值,最低值。

int:
Max int value: 2147483647
Min int value: -2147483648
Lowest int value: -2147483648


double:
Max double value: 1.79769e+308
Min double value: 2.22507e-308
Lowest double value: -1.79769e+308

那么后两者的区别是什么呢?

对于整型数据,两者是相等的。对于浮点数,Min获取到的是最小的正数,lowest获取的是所能表示的最小的那个值,即-max()

同时,numeric_limits可以用来获取“无穷”:

numeric_limits<double>::infinity

表示无穷的一个变量,常用于表示一个非零值除以0的结果。

NaN用来表示不是一个数,常用于表示0除以0的结果。

二者均可以通过以下方法进行判断:

std::isnan()

std::isinf()

附默认值

int i {}; // 0

float f {}; // 0.0

整型默认0,浮点型默认0.0,指针默认nullptr, 类默认为默认构造器创建的对象

类型转换

c++存在三种显示转换方式:

float myFloat { 3.14f };

int i1 { (int)myFloat }; // method 1
int i2 { int(myFloat) }; // method 2
int i3 { static_cast<int>(myFloat) }; // method 3

其中方式一是沿用的c的风格,比较常用。方法二很少使用。方法三是比较推荐的方式。

还有具有兼容性的隐式转换:

long l {someshort};

当新的类型完全可以覆盖老类型时,没有问题。否则需要注意精度损失的问题。

赋值关系描述

// bool赋数值时,0赋值为false, 其他赋值为true

bool b = 42; // b is true

// true转为数值为1, false转为数值为0
int i = b; // i has value 1

// 浮点数赋值给整型的时候,保留整数部分
i = 3.14; // i has value 3

// 整型赋值给浮点型,小数部分为0,可能会存在精度损失
double pi = i; // pi has value 3.0

// 有符号赋值给无符号时,会自动mod 范围,如8位就会mod256
unsigned char c = -1; // assuming 8-bit chars, c has value 255

// 有符号赋值给一个超出范围的数值时,会得到undefined,可能造成程序崩溃
signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined

字面值与进制描述

十进制:20? ?(D)

八进制:24(O)

十六进制:14(H)

二进制:10100(B)

在c++中,十进制原样表示,八进制以0开头,十六进制以0X开头, 二进制以0B开头

进制数值
十进制20
八进制024
十六进制0X14
二进制0B10100

上述三种进制的数值均为字面量,即代码中明确指定的数值,而非计算获取到的数值均为字面量。

科学计数法也同样可以使用:3.14159E3表示为3141.59

浮点数字面值:

单精度浮点3.14F
双精度浮点数3.14

字符、字符串字面量:

字符字面量'A', 'B', 'C'
字符串字面量"China", "Hello World"

字符串字面量的末尾默认带有"\0"表示字符串的结束,所以字符串常量的实际长度往往是字符长度+1

转义字符

转义符含义
\n换行
\t横向tab键效果
\a警告
\v竖向tab键效果
\b删除键
\"双引号
\\反斜杠\
\?问号
\'单引号
\r回车
\f翻页

还有一种\OOO使用最多三个8进制表示单个字符,使用\xHHH多个十六进制位表示单个字符。

操作符

操作符含义示例
=
?
赋值int i = 3;
int j = i;
!?
?
非运算bool b {!true};
bool b2 {!b};
+加法int i {3 + 2};
int j {i + 5};
int k {i + j};

-

*

/

减法

乘法

除法

int i {5 – 1};
int j {5 * 2};
int k {j / i};
%模,取余int rem {5 % 2};
++

自增,

++在前,先做自增

++在后,后做自增

i++;
++i;
--

自减

--在前,先做自减

--在后,后做自减

i--;
--i;

+=

-=

*=

/=

%=

下方表达式的简写:

i = i + j
i = i - j;
i = i * j;
i = i / j;
i = i % j;

i += j;
i -= j;
i *= j;
i /= j;
i %= j;

&

&=

位与运算

位与赋值运算

i = j & k;
j &= k;

|

|=

位或运算

位或赋值运算

i = j | k;
j |= k;

^

^=

位异或运算

异或赋值运算

i = i ^ j;
i ^= j;

<<

>>

<<=

>>=

移位运算

移位赋值运算

i = i << 1;
i = i >> 4;
i <<= 1;
i >>= 4;
?:三维运算i > 2 ? "yes" : "no"

运算符优先级

优先级降序
++ -- (postfix)
! ++ -- (prefix)
* / %
+ -
<< >>
&
^
|
= += -= *= /= %= &= |= ^= <<= >>=

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 11:50:18  更:2022-05-19 11:51:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 0:46:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码