一、输入输出 (iostream库)
C++中的输入输出,主要包括标准输出流cout、标准输入流cin和标准库iostream。
1.标准输出流cout
cout输出流需要搭配<<输出操作符来使用,如输出语句:
#include <iostream> using namespace std; int main() { cout << "Hello World" ; return 0; }
输出结果:
Hello World
这里简单解释一下 ,C++标准程序库中的所有标识符都被定义于一个名为std的namespace中,也就是我们的 cout 标识符被定义在 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++程序
2.标准输入流cin
接收一个数据之前,都要先定义一个与之类型一致的变量,用来存放这个数据,然后利用cin搭配>>输入操作符,来接收用户从键盘的输入,如代码:
#include <iostream> using namespace std; int main() { int a; cin >> a; cout << "get num:" << a << endl; return 0; }
输出结果如下:
3.标准库iostream
iostream的意思是输入输出流,直接点说就是in(输入) out(输出) stream(流),取in、out的首字母与stream合成。输入和输出是数据传送的过程,数据如流水一样从一处流向另一处。C++形象地将此过程称为流(Stream)。
iostream(.h)库声明的对象分为两组:窄字符(char)、宽字符(wchar_t)。
(1)iostream中的窄字符(char)
主要包含下面对象 :
- cin:标准输入流
- cout:标准输出流
- cerr:错误的标准输出流
- clog:用于记录的标准输出流
(2)iostream中的 宽字符(wchar_t)
主要包含下面对象 :
- wcin:标准输入流(宽)
- wcout:标准输出流(宽)
- wcerr:错误的标准输出流(面向广角)
- wclog:用于记录的标准输出流(宽)
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[])来存储。
二、变量与数据类型
1.变量
(1)概念:
- 内存中的一个存储区域,该区域的数据可以在同一范围内不断变化
- 变量的构成包涵三个要素:数据类型、变量名、存储的值
- c++定义变量的格式:数据类型 变量名 =(赋值符号) 变量值;
int a = 5; //数据类型:int //变量名:a //"=":表示赋值符号 //"5":变量值
(2)变量的声明和初始化:
声明变量是指在程序中指定变量的数据类型和名称,而初始化变量是指在声明变量的同时将其赋予一个初始值。
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;
(3)在变量声明和初始化的过程中需要注意的事项:
- 定义变量时,变量名要遵循标识符命名的规则和规范
- 变量必须先声明,后使用。
- 变量都定义在其作用域内。在作用域内,他是有效的。
- 在同一个作用域内,不可以声明两个同名的变量。
- 定义好变量后,就可以通过变量名的方式对变量进行调用和运算
- 变量值在赋值时,必须满足变量的数据类型,并且在数据类型有效的范围内变化
2.数据类型
(1)数据类型的分类:
C++的数据类型分为基本数据类型和非基本数据类型,在这里主要介绍基本数据类型。
(2)基本数据类型之间的运算规则:
在这里我们讨论的除布尔类型以外的七种基本数据类型变量间的运算
- 自动类型提升:(容量大小是指表示数的范围的大小)
- 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据型。
此时的容量大小并非指所占的内存空间的大小,而是指表示数据范围的大小:
short--> int--> long--> float--> double
short/char-->int--> long--> float--> double(当short/char类型的变量做运算时,结果为int)
- 强制类型转换:自动类型提升运算的逆运算。
- (需要将容量大的变量的类型转换转换为容量小的类型转换时使用强制类型转换)
- 1.需要使用强转符()
- 2.注意:强制类型转换过程中,可能导致精度损失
整型常量默认类型为int型
浮点型常量默认类型为double型
3.进制与进制之间的转化
所有数字在计算机底层都以二进制形式存在
计算机世界中只有二进制,所有计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。
- 二进制的由来:由德国数理哲学家莱布尼茨于1679年发明
- 二进制:0,1——满二进一 ——以0b或0B开头
- 八进制:0~7——满八进一 ——以0开头(较少使用)
- 十进制:0~9——满十进一
- 十六进制:0~9以及A~F——满十六进一 ——以0x或0X开头表示
二进制转化成十进制:
计算机底层都以补码的方式存储数据。
符号位:0;——+14(原码=补码=反码)
符号位:1;—— -14
原码:(把十进制转为二进制,然后最高位设置为1)
反码:(在原码的基础上,最高位不变,其余位取反<0变1,1变0>)
补码:(反码+1)
- 十进制转换成二进制:除二取余的逆;
- 二进制转化成八进制:8 = 2^3;每三个算一位
- 二进制转化成十六进制:16=2^4;每四个算一位
C++从零基础到入门(1)-2