C++重点基础知识汇总大全


一些基础知识点

1、十进制的数字比较长的时候,可以加'方便阅读到底是几位,输出的时候跟不加是一样的效果

// 十进制可以加'
cout << 13'890'324 << endl; // 13890324
// 二进制前加0b
cout << 0b111 << endl; //7
// 八进制前加0
cout << 011 << endl; //9
// 十六进制前加0x
cout << 0xf1 << endl; //241(1*16^0 + f*16^1 = 241)

2、常量

  • 直接使用,如cout << 123 << endl;
  • const 类型 名字 {值}const 类型 名字 = 值
  • #define 名字 值 (没有分号)

3、变量定义赋值可以用{},(),=,但最好用大括号{},比较安全

// 如int赋值
int a = 7.5; // 编译自动变为7
int a { 7.5 }; // 编译不通过,不会降7.5自动变成7,安全
// 大括号内什么都不写则默认赋值为0

4、整型/浮点数的表达

二进制:0b11L
八进制:011L
十进制:121L
十六进制:0xf1L

后缀(推荐用大写)

  • L/l:long型
  • LL/ll:long long型
  • U/u:无符号型,可以与L或LL组合使用,如65535ULL
    在这里插入图片描述

float:F/f
如200.0F (不可以是200F)
不带后缀一律视为double,如200.0
后缀为L的浮点数视为long double,如200.0L

5、浮点数运算精确度要注意

float a{ 65923600.0 }, b{ 0.000001 }, c{ a + b };
cout << (a == c ? 1 : 0) << endl; // 1
cout << a << endl; // 6.59236e+07
cout << b << endl; // 1e-06
cout << c << endl; // 6.59236e+07

// 这里精度丢失了,a和c是相等的

6、类型转换

类型转换顺序:
在这里插入图片描述

有的编译器里int与long是平级关系

int a{ 500 };
unsigned b{ 1000 };
cout << a - b << endl; // 4294966796,这里int转换为了unsigned int
long long a{ 500 };
unsigned b{ 1000 };
cout << a - b << endl; // -500,这里unsigned int转换为了long long
int a{ 500 };
unsigned b{ 1000 };
a -= b;	//a-b为unsigned,但赋值给了a,转成了int,故结果为-500
cout << a << endl; // -500
int a{ 500 };
unsigned b{ 1000 };
// C中的强转
cout << (int)(a - b) << endl; // -500
// C++中的强转:static_cast<>()
cout << static_cast<int>(a - b) << endl;

7、字符

char charA{ 'A' };
cout << charA << endl;	//A

wchar_t wcharA{ L'a' };
cout << wcharA << endl;	// 97
wcout << wcharA << endl; // wchar_t要用wcout,输出a

// 没有支持char16_t和char32_t的输出,cout只能将其输出为数字
char16_t char16{ u'a' };
cout << char16 << endl;	// 97

char32_t char32{ U'a' };
cout << char32 << endl;	// 97

注意一下另外三个字符类型要用L,u,U激活

wchar_t要显示中文需要setlocale(LC_ALL, "chs");

8、推断类型

auto 变量名 {初始值}

查看一个变量的类型typeid(变量).name()

auto a{ 200 };
cout << a << endl; // 200
cout << typeid(a).name() << endl; // int

auto b{ 100LL };
cout << b << endl; //100
cout << typeid(b).name() << endl;; // __int64

auto c{ 100L };
cout << c << endl; //100
cout << typeid(c).name() << endl; // long

auto e{ L'A' };
cout << e << endl; //65
cout << typeid(e).name() << endl; // wchar_t

auto d{ U'A' };
cout << d << endl; //65
cout << typeid(d).name() << endl; // char32_t

9、格式化输出流及转义

格式化输出流操作
std::fixed以小数点模式输出浮点数,例如3.1415926
std::scientific以科学计数法输出浮点数,例如3E100
std::defaultfloat恢复默认的浮点数输出
std::setprecision(int)设置浮点数的精度,例如std::setprecision(2)后,输出 3.14
std::dec以后输出的数字采用十进制输出,例如999
std::hex以后输出的数字采用十六进制输出,例如FFF
std::oct以后输出的数字采用八进制输出,例如777
std::showbase十六进制和八进制输出前显示前缀,例如0xFFF
std::shownobase关闭十六进制和八进制显示前缀
std::setw(int)把输出内容设置宽度,例如std::setw(10)
std::setfill(char)当显示宽度超过字符宽度时,用指定字符串填充剩余内容,例如std::setfill('*')
std::left设置字符对齐模式为左对齐
std::right设置字符对齐模式为右对齐

红色部分需要使用相关头文件#include <iomanip>

10、运算符优先级

C++运算符优先级表,从上到下,从左到右,优先级依次减弱。

优先级运算符说明结合性
1::范围解析自左向右
2++ --后缀自增/后缀自减
()括号
[]数组下标
.成员选择(对象)
->成员选择(指针)
3++ --前缀自增/前缀自减自右向左
+ -加/减
! ~逻辑非/按位取反
(type)强制类型转换
*取指针指向的值
&取某某的地址
sizeof取某某的大小
new, new[]动态内存分配/动态数组内存分配
delete, delete[]动态内存释放/动态数组内存释放
4.* ->*成员对象选择/成员指针选择自左向右
5* / %乘法/除法/取余
6+ -加号/减号
7<< >>位左移/位右移
8< <=小于/小于等于
> >=大于/大于等于
9== !=等于/不等于
10&按位与
11^按位异或
12|按位或
13&&与运算
14||或运算
15?:三目运算符
16=赋值自右向左
+= -=相加后赋值/相减后赋值
*= /= %=相乘后赋值/相除后赋值/取余后赋值
<<= >>=位左移赋值/位右移赋值
&= ^= |=位与运算后赋值/位异或运算后赋值/位或运算后赋值
17throw抛出异常
18,逗号自左向右

11、枚举变量

  • 枚举类型可以提高代码的可读性和安全性
  • 枚举类型默认是int类型
  • 枚举类型成员只能是整数类型
  • 枚举类型和其他类型转换需要强制转换
  • 默认情况下,枚举类型的下一个项的初始值是上一个项的初始值+1
enum class EquipLevel :int
{
	normal = 10, armyA = normal,
	high, armyB = high,
	rare, armyC = rare,
	epic, armyD = epic,
	legend, armyE = legend,
	myth, armyF = myth
};

EquipLevel A{ EquipLevel::normal };
EquipLevel B{ EquipLevel::epic };

short diff = (int)B - (int)A;
cout << diff << endl;	//3

c++枚举详细介绍以及具体用法

12、自定义变量名称

  • #define A TypeName,如#define ZS1 int
  • typedef TypeName A ,如typedef int ZS2
  • using A = TypeName,如using ZS3 = int

13、位运算

指针和引用

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
C语言程序设计是计算机科学与技术专业中非常重要的一门课程。它作为一门编程语言,具有广泛的应用领域,包括嵌入式系统、操作系统、网络编程等等。在学习这门课程时,我们需要关注一些重点和难点。 首先,理解C语言的语法规则和基本概念是学习这门课程的重点。C语言拥有丰富的语法特点,比如关键字、标识符、变量类型、运算符、控制语句等等。学习者需要通过大量的练习和实例来熟练掌握这些知识点,并能够灵活运用到实际的程序编写中。 其次,算法和逻辑思维是C语言程序设计的难点。在解决实际问题时,我们需要编写高效的算法来实现功能。学习者需要具备良好的逻辑思维能力,能够将问题抽象化,并使用C语言编写出相应的算法。对于初学者来说,这可能是一个挑战,需要不断的练习和实践来提高自己的算法设计能力。 第三,调试和错误处理也是学习C语言程序设计的难点之一。在编写程序时,难免会出现错误和bug。学习者需要具备良好的调试能力,能够找到问题所在并及时修复。同时,还需要学会合理地处理错误,以提高程序的稳定性和鲁棒性。 最后,实际应用是C语言程序设计的重点之一。学习者需要通过实际的项目实践来巩固自己的知识,并将所学的内容应用到实际中去。这样可以更好地理解和掌握C语言的特性和应用场景,提高自己的编程能力。 总结来说,C语言程序设计课程的重点在于理解语法规则和基本概念,算法设计和逻辑思维,调试和错误处理,以及实际应用。只有通过不断的学习和实践,才能够掌握这门重要的编程语言,提高自己的编程水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

GeniusAng丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值