栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【一起学C++】变量、基本类型、操作符

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【一起学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::max());
cout << format("Min int value: {}n", numeric_limits::min());
cout << format("Lowest int value: {}n", numeric_limits::lowest());

cout << "ndouble:n";
cout << format("Max double value: {}n", numeric_limits::max());
cout << format("Min double value: {}n", numeric_limits::min());
cout << format("Lowest double value: {}n", numeric_limits::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::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(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"

字符串字面量的末尾默认带有""表示字符串的结束,所以字符串常量的实际长度往往是字符长度+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)
* / %
+ -
<< >>
&
^
|
= += -= *= /= %= &= |= ^= <<= >>=

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/889875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号