目录
4.布尔型boolean——只能取两个值:true,false
C++中的输入输出,主要包括标准输出流cout、标准输入流cin和标准库iostream。
cout输出流需要搭配<<输出操作符来使用,如输出语句:
#include <iostream>
using?namespace?std;
int main()
{
cout <<?"Hello World"?;
return?0;
}
输出结果:
Hello World
这里简单解释一下?<using namespace std;?>,C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,也就是我们的 cout?标识符被定义在 std。<using namespace std;?>用于告诉编译器在当前程序中使用标准命名空间(std)中的所有标识符,这样在程序中就可以直接使用cout、cin、endl等标准库中的函数和对象,而不必使用完整的限定名来表示。我们也可以像下面一样写Hello World程序:
#include <iostream>
int main()
{
std::cout <<?"Hello World"?;// 使用完整的限定名来表示
return?0;
}
输出结果:
Hello World
本质上,是将字符串"Hello"插入到cout对象里,并以cout对象作为返回值返回,因此你还可以用<<在后面连续输出多个内容,如:
#include <iostream>
using?namespace?std;
int main()
{
cout <<?"Hello "?<<"zgl "?<<?"这是你第一个C++程序";
return?0;
}
输出结果:
Hello zgl 这是你第一个C++程序
提到cout,最常用到的还有endl操纵符,可以直接将它插入到cout里,起输出换行的效果,如:
#include <iostream>
using?namespace?std;
int main()
{
cout <<?"Hello "?<< endl <<"zgl "?<< endl <<?"这是你第一个C++程序";
return?0;
}
输出结果:
Hello
zgl
这是你第一个C++程序
接收一个数据之前,都要先定义一个与之类型一致的变量,用来存放这个数据,然后利用cin搭配>>输入操作符,来接收用户从键盘的输入,如代码:
#include <iostream>
using namespace std;
int main()
{
int a;
cin >> a;
cout << "get num:" << a << endl;
return 0;
}
输出结果如下:
iostream的意思是输入输出流,直接点说就是in(输入) out(输出) stream(流),取in、out的首字母与stream合成。输入和输出是数据传送的过程,数据如流水一样从一处流向另一处。C++形象地将此过程称为流(Stream)。
iostream(.h)库声明的对象分为两组:窄字符(char)、宽字符(wchar_t)。
主要包含下面对象 :
主要包含下面对象 :
iostream中的窄字符(char)与?宽字符(wchar_t)的差异:
? ? ? ??1)char 的大小只有 1 个字节,而 wchar_t 的大小则是平台相关的,通常为 2 或 4 个字节,可以用于编码更多的字符(如中文字)。
? ? ? ??2)char 使用的是默认字符集(如 ASCII),而 wchar_t 使用的是宽字符集(如 UTF-16 或 UTF-32 等)。
? ? ? ??3)对于字符串的处理方式不同,char 类型的字符串使用字符数组(char[]) 来存储,而 wchar_t 类型的字符串则使用宽字符数组(wchar_t[])来存储。
int?a =?5;
//数据类型:int
//变量名:a
//"=":表示赋值符号
//"5":变量值
声明变量是指在程序中指定变量的数据类型和名称,而初始化变量是指在声明变量的同时将其赋予一个初始值。
int main()
{
int?a;//声明一个int型变量a
a =?15;//将a的值初始化为15;
int?b =?20;//声明一个int型变量b并且将其初始化为20
return?0;
}
在c++中还可以同时声明并初始化多个变量
声明多个变量:
int?a,b,c;
声明并初始化多个变量:
int?a =?1,b =?8,c =?9;
C++的数据类型分为基本数据类型和非基本数据类型,在这里主要介绍基本数据类型。
?
在这里我们讨论的除布尔类型以外的七种基本数据类型变量间的运算
此时的容量大小并非指所占的内存空间的大小,而是指表示数据范围的大小:
short--> int--> long--> float--> double? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
short/char-->int--> long--> float--> double(当short/char类型的变量做运算时,结果为int)
整型常量默认类型为int型
浮点型常量默认类型为double型
所有数字在计算机底层都以二进制形式存在
计算机世界中只有二进制,所有计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。
二进制转化成十进制:
?
计算机底层都以补码的方式存储数据。
符号位:0;——+14(原码=补码=反码)
?
符号位:1;—— -14
原码:(把十进制转为二进制,然后最高位设置为1)
反码:(在原码的基础上,最高位不变,其余位取反<0变1,1变0>)
?
补码:(反码+1)
?
??
字节(byte):是计算机用于计量存储容量的基本单位,一个字节等于8bit;
位(bit):是数据存储的最小单位。二进制数系统中,每个0或者1就是一个位,叫做bit(比特),其中8bit就称为一个字节
转换关系:
char(1字符=2字节)
字符型变量的三种表现方式:
常使用在流程控制语句中。比如,条件判断、循环结构等
我们不谈boolean类型所占的空间大小。但是真正在内存中分配的话,使用的是4个字节
C++的基础运算符和C类似,比如:算术运算符、关系运算符、逻辑运算符、位运算符。
C++ 的算术运算符用于处理基本的数学运算。主要包括:加、减、乘、除、取余、自增、自减。
需要注意的是:
除法运算符?/,如果操作数都是整数,那么结果也是整数,小数部分会被舍去。如果想得到浮点数的结果,可以将操作数转为?float?或?double?类型。
取模运算符?%?只适用于整数操作数。如果你需要对浮点数进行类似操作,可以使用函数?fmod()(需引入?<cmath>?头文件)。
在使用这些算术运算符时,请确保操作数遵循相应的数据类型规则,并避免因操作数类型不当导致的错误。同时,在进行数学运算时要注意防止溢出。
C++ 的关系运算符用于比较两个操作数之间的关系。关系运算符在条件判断中非常常用,通常用于控制结构(如 if、while)中的表达式。主要包括:等于、不等于、大于、小于、大于等于、小于等于。
需要注意的是:
在使用关系运算符时,请确保操作数具有可比较的类型。同时注意,如果操作数是浮点数,可能会因浮点数精度问题导致比较结果不如预期。通常建议对浮点数的比较使用误差范围,而非直接进行关系运算。
C++ 的逻辑运算符用于连接或改变多个布尔表达式的值。逻辑运算符在控制结构(如 if、while)中的条件判断语句中广泛使用。主要包括:与、或、非。
需要注意的是:
在使用逻辑运算符时,C++ 采用短路求值策略,即只在需要时执行后续的布尔表达式。例如,对于逻辑与运算?&&,如果第一个表达式为?false,则整个表达式必定为?false,无需计算第二个表达式。这种优化策略有助于提高效率,但可能导致一些副作用被跳过。因此,谨慎考虑布尔表达式间的顺序与副作用。
C++ 的位运算符用于操作整数类型数据的二进制位。位运算符处理的对象是整数在内存中的位表示。主要包括:位与、位或、按位取反、异或、左移、右移。
需要注意的是:
位运算符仅适用于整数类型(如?int、long、char?等)。在进行位运算时,需要确保操作数遵循相应的数据类型规则。同时,当在 unsigned 类型上执行位移运算时,请特别注意不要引入符号扩展。在使用有符号整数时,注意有符号整数的位移运算符可能会导致未定义的行为。
当然还有一些其它的运算符,比如:赋值、逗号、下标、取地址、解引用,这些后续再总结。