c++基础

c++的环境配置

选用Dvc++作为c++的环境

https://sourceforge.net/projects/orwelldevcpp/下载网址

第一个c++程序

创建项目

运行的项目类型选定存储位置

cpp 复制代码
#include <iostream>//包含的c++头文件
using namespace std;//使用的命名库

int main() {//主函数
	cout<<"hello world"<<endl;//"hello world"是字符串
	return 0;
}

#include<iostream>

是c++的常用头文件,和c语言不同,c++的新版头文件不加.h。

namespace是命名库,用于使用相同名字不同功能的函数调用。

cout在std命名库中是输出,会自动识别输出的类型,cout<<,符号不能用错,表示右边的数据通过<<给cout函数输出

endl在std命名库中是换行。

cin在std命名库中是输如,会自动识别输入的类型,sin>>,符号不能用错,表示左边的数据通过>>s输入给右边的变量。

运行时要进行编译

F9编译

F10运行

F11编译运行

数据类型

字符串,字,数。char(1)

整数,int(4),short(2),long(4or8(lp64)),ll(8)

小数float(4),double(8),long double(16)

Ture or False _bool(1)

sizeof操作符,类型长度

后面是变量命时()可省略

单位是字节1字节=8bit=4B,8个二进制位

signed有符号(正负)

unsigned无符号 可以储存最大整数值

符号大小

char:1字节,取值范围为-128到127(有符号)或0到255(无符号)

short:2字节,取值范围为-32,768到32,767(有符号)或0到65,535(无符号)

int:4字节,取值范围为-2,147,483,648到2,147,483,647(有符号)或0到4,294,967,295(无符号)+-21亿

long:8字节,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符号)或0到18,446,744,073,709,551,615(无符号)

long long:8字节,取值范围为-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符号)或0到18,446,744,073,709,551,615(无符号)

float:4字节,取值范围约为±3.4E+38,精度为6-7位有效数字

double:8字节,取值范围约为±1.7E+308,精度为15-16位有效数字

long double:16字节,取值范围约为±1.1E+4932,精度为19位有效数字

基本和c语言一样

char存储时也可以用ASCII码值来表示。如A是65.

可以使用sizeof获得类型的长度。

float是4字节输出为4.

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
	int n;
	n=sizeof(float);
	cout<< n <<endl;
	return 0;
}

signed 与unsigned

有符号会多一位符号位占用,所以比无符号的上线小一半。

你的输入的负数存储的无符号中会是把符号位算进去

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
	unsigned int n;
	n=-1;
	cout<< n <<endl;
	return 0;
}

typedef可以给类型重命名

cpp 复制代码
#include <iostream>
using namespace std;
typedef unsigned int uint;
int main() {
	uint n;
	n=-1;
	cout<< n <<endl;
	return 0;
}

变量

int i;//由int变量类型和i变量名组成。变量名由字母(Az),数字(13),下划线(_)

在创建变量时给予值的叫初始化,后面的是赋值,

分为全局和局部,

全局所以的函数使用同一个变量,局部变量在函数内定义使用,当全局变量和局部变量名相同时先使用局部变量,如果想使用全局变量加::

cpp 复制代码
#include <iostream>
using namespace std;
typedef unsigned int uint;
int a=0;//全局变量a
int n=0;//全局变量n
void jia(){
	a++;//改变全局变量
	int b=0;//局部变量b
	b++;//改变局部变量
	int n=0;//局部变量n
	::n++;//改变全局变量
}
int main() {
	int b;
	jia();
	cout<< a <<endl;
	cout<< b <<endl;
	cout<< n <<endl;
	return 0;
}

常量

不可修改的数

如整型4,浮点型3.14。字符'a'

#define M(常量名)n(常量值)

常量不可修改。

算数操作符

了解整数的储存

整数的2进制表示有原码,反码,补码。

补码是目前计算机中广泛采用的编码方式,统一了加减运算,消除了零的冗余,提高了运算效率。

有符号的整数由符号位和数值位组成。2进制最高位为符号位0表示正,1表示负。

正整数的三码相同。负整数个不相同。

进行加法计算时用补码计算

原码取反(符号位不取反)得反码再加1得补码。

补码先取反再加1得原码。或先减1再取反。

移位操作符<<,>>.

只能用于整数移动的位数只能是正整数且在合理范围内

<<左移操作符

左边丢掉,右边补零,有乘2的作用

>>右移操作符,

分为算数位移(一般用):左边用符号位补充,右边丢弃。

逻辑位移(大多编译器不用):左边补零,右边丢掉。

a<<=1(a=a<<1);

位操作符&,|,^,~。操作的是2进制位.

&与有0为0。特殊算法n&(n-1)去掉最末尾的1。

|或有1为1。

^异或相同为0;相异为1

可用来无临时变量交换。

~按位取反。

计算有多少个1

判断是否为2的次方数简化

修改特定的i位数为1

n|=(1<<i-1)

为0

n&=(~(1<<i-1))

逗号表达式

ex1,ex2,ex3.

最后的结果是表达式的结果,从左往右计算。如下

下标访问[]。双目

索引数组的值,一个数组名+一个索引值

函数调用(),接受一个或多个,至少一个

包括函数名和括号里的内容。

结构成员访问操作符

结构体中(.),->

结构体是为了描述复杂的对象如学生,可以包含多个属性

如何创建,关键字struct

使用例子,结构体.类型名。直接访问。

操作符的优先级

最高优先级: 2 一元操作符:

1圆括号():可用于强制改变计算顺序 2自增/自减++、--

1成员访问、数组下标等 2逻辑非!、按位取反~

2一元正负号+、-

3算术操作符:

3.1乘法*、除法/、模% 3.2加法+、减法-

4比较操作符:

大小比较<、>、<=、>= 等值比较==、!=

5位操作符:

位移<<、>> 位与&、位异或^、位或|

6逻辑操作符:

逻辑与&& 逻辑或||

7赋值操作符:

=、+=、-=等复合赋值操作符

最低优先级:

逗号运算符

当优先级相同时看结合性

如前缀++是从右向左。

参考:c语言运算符优先级顺序表

https://config.net.cn/tools/precedence-and-associativity-rules-for-operators-in-c.html

表达式求值

整型提升

存储小于int,有符号的按符号位来提升

无符号提升,高位补0;

算数转换

小的类型转换为大的类型。如int+float。

先将int里的值转为float类型

强制类型转换

(强制的类型)变量名。

应用:

cpp 复制代码
#include <iostream>
using namespace std;
int main() {
	long long b;
	double a;
	cin>>a;
	b=(long long)a;
	cout<< b <<endl;
	return 0;
}

输入时舍弃小数部分

问题表达式

1,顺序不为一时有风险如a*b+b*c+c*d乘加不相邻有歧义。

2 c+c--=;先算--时会小2,后算会小1。

数值溢出会剔除最高位。char是8位超过8位会删除最高位循环。

输入输出、

getchar和putchar

int getchar(void)

返回输入的字符的ASCII;

int putchar()不会忽略空格,如果读取失败返回EOF(-1)输入Ctrl+z返回错误。

#include<cstdio>;包含c语言的头文件

scanf和printf。

C语言中的函数,在c++中可以包含相应的头文件使用。

scanf和printf要了解占位符

占位符

%d:有符号十进制整数(int类型)

%u:无符号十进制整数(unsigned int类型)

%o:无符号八进制整数

%x / %X:无符号十六进制整数,%x使用小写字母,%X使用大写字母456。

%ld / %lu:长整型(long类型)

%lld / %llu:长长整型(long long类型)

浮点类型

%f:单精度或双精度浮点数

%e / %E:科学计数法表示浮点数,%e使用小写字母,%E使用大写字母

%g / %G:自动选择%f或%e格式,以最简洁的方式表示浮点数

字符和字符串类型

%c:单个字符(char类型)

%s:字符串(char*类型)

其他类型

%p:指针类型,以十六进制形式输出指针地址

%n:不输出内容,而是将当前已输出的字符数写入对应变量(需指针类型)

%%:输出一个百分号%

sizeof的返回值是size_t用%zu

printf()参数,比占位符多一

scanf函数输入的值是放在一个地址,&取址符

scanf_s函数不等于scanf函数

count和cin

cout在std命名库中是输出,会自动识别输出的类型,cout<<,符号不能用错,表示右边的数据通过<<给cout函数输出

多组输出cout<< a << b <<endl;

cin在std命名库中是输如,会自动识别输入的类型,cin>>,符号不能用错,表示左边的数据通过>>输入给右边的变量。

多组输入cin >> a >> b ;

c++补充

条件判断,数组,string,函数与递归,结构体和类。

相关推荐
MoonBit月兔1 小时前
审美积累 | MoonBit LOGO 投稿作品速递
开发语言·编程·moonbit
互亿无线明明1 小时前
如何为全球业务构建可扩展的“群发国际短信接口”?
java·c++·python·golang·eclipse·php·erlang
缘三水2 小时前
【C语言】12.指针(2)
c语言·开发语言·指针
Python学习导航2 小时前
Python开源项目月排行 2025年10月
开发语言·python
buyue__2 小时前
C++实现数据结构——链表
数据结构·c++·链表
爱吃巧克力的程序媛2 小时前
Qt 异步编程---概述
开发语言·qt
feifeigo1232 小时前
MATLAB实现两组点云ICP配准
开发语言·算法·matlab
Yang-Never2 小时前
Open GL ES->以指定点为中心缩放图片纹理的完整图解
android·java·开发语言·kotlin·android studio
fengfuyao9852 小时前
粒子群算法(PSO)求解标准VRP问题的MATLAB实现
开发语言·算法·matlab