本文转载自:/AnkerLeng/Cpp-0-1-Resource.git
视频见:/video/av41559729
1 C++初识
1.1 第一个C++程序
编写一个C++程序总共分为4个步骤
创建项目创建文件编写代码运行程序
1.1.1 创建项目
Visual Studio是用来编写C++程序的主要工具,先将它打开。
1.1.2 创建文件
右键源文件,选择添加 -> 新建项。
给C++文件起个名称,然后点击添加即可。
1.1.3 编写代码"Hello world"
#include <iostream>using namespace std;int main() {cout << "Hello world" << endl;system("pause"); // 按任意键继续return 0; // 返回正常退出值}
1.1.4 运行程序
1.2 注释
作用:在代码中加一些说明和解释,方便自己或其他程序员阅读代码
两种格式
1、单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明快捷键:ctrl+k+c
2、多行注释:/* 描述信息 */
/* main是一个程序的入口,每个程序都有一个main函数,有且仅有一个*/
通常放在一段代码的上方,对该段代码做整体说明
提示:编译器在编译代码时,会忽略注释的内容
visual studio源文件中只能有一个main函数
1.3 变量
作用:给一段指定的内存空间起名,方便操作这段内存。
语法:数据类型 变量名 = 初始值;
示例:
#include <iostream>using namespace std;int main() {//变量的定义//语法:数据类型 变量名 = 初始值int a = 10;cout << "a = " << a << endl;system("pause");return 0;}
注意:C++在创建变量时,必须给变量一个初始值,否则会报错。
每段内存都会有一个地址编号,十六进制,缺点是如果编号太多不方便记录。
1.4 常量
作用:用于记录程序中不可更改的数据。
C++定义常量两种方式:
1、#define宏常量:#define 常量名 常量值
通常在文件上方定义,表示一个常量。
2、const修饰的变量const 数据类型 常量名 = 常量值;
通常在变量定义前加关键字const,修饰该变量为常量,不可修改。
示例:
//1、宏常量#define day 7int main() {cout << "一周里总共有 " << day << " 天" << endl;//day = 8; //报错,宏常量不可以修改//2、const修饰变量const int month = 12;cout << "一年里总共有 " << month << " 个月份" << endl;//month = 24; //报错,常量是不可以修改的system("pause");return 0;}
1.5 关键字
作用:关键字是C++中预先保留的单词(标识符)。
在定义变量或者常量时候,不要用关键字。
C++关键字如下:
提示:在给变量或者常量起名称时候,不要用C++的关键字,否则会产生歧义。
1.6 标识符命名规则
作用:C++规定给标识符(变量、常量)命名时,有一套自己的规则。
标识符不能是关键字标识符只能由字母、数字、下划线组成第一个字符必须为字母或下划线标识符中字母区分大小写
建议:给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
2 数据类型
C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
2.1 整型
作用:整型变量表示的是整数类型的数据。
C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:
2.2 sizeof关键字
作用:利用sizeof关键字可以统计数据类型所占内存大小(字节数)
语法:sizeof( 数据类型 / 变量)
或sizeof 表达式
示例:
int main() {cout << "short 类型所占内存空间为: " << sizeof(short) << endl;cout << "int 类型所占内存空间为: " << sizeof(int) << endl;cout << "long 类型所占内存空间为: " << sizeof(long) << endl;cout << "long long 类型所占内存空间为: " << sizeof(long long) << endl;system("pause");return 0;}
整型结论:short < int <= long <= long long
#include <iostream>using namespace std;int main(){cout << "bool: " << sizeof(bool) << endl;cout << "char: " << sizeof(char) << endl;cout << "unsigned char: " << sizeof(unsigned char) << endl;cout << "signed char: " << sizeof(signed char) << endl;cout << "short int: " << sizeof(short int) << endl;cout << "unsigned short int: " << sizeof(unsigned short int) << endl;cout << "signed short int: " << sizeof(signed short int) << endl;cout << "int: " << sizeof(int) << endl;cout << "unsigned int: " << sizeof(unsigned int) << endl;cout << "signed int: " << sizeof(signed int) << endl;cout << "long int: " << sizeof(long int) << endl;cout << "unsigned long int: " << sizeof(unsigned long int) << endl;cout << "signed long int: " << sizeof(signed long int) << endl;cout << "long long int: " << sizeof(long long int) << endl;cout << "unsigned long long int: " << sizeof(unsigned long long int) << endl;cout << "signed long long int: " << sizeof(signed long long int) << endl;cout << "float: " << sizeof(float) << endl;cout << "long float: " << sizeof(long float) << endl;cout << "double: " << sizeof(double) << endl;cout << "long double: " << sizeof(long double) << endl;cout << "bool指针: " << sizeof(bool*) << endl;cout << "char指针: " << sizeof(char*) << endl;cout << "unsigned char指针: " << sizeof(unsigned char*) << endl;cout << "signed char指针: " << sizeof(signed char*) << endl;cout << "short int指针: " << sizeof(short int*) << endl;cout << "unsigned short int指针: " << sizeof(unsigned short int*) << endl;cout << "signed short int指针: " << sizeof(signed short int*) << endl;cout << "int指针: " << sizeof(int*) << endl;cout << "unsigned int指针: " << sizeof(unsigned int*) << endl;cout << "signed int指针: " << sizeof(signed int*) << endl;cout << "long int指针: " << sizeof(long int*) << endl;cout << "unsigned long int指针: " << sizeof(unsigned long int*) << endl;cout << "signed long int指针: " << sizeof(signed long int*) << endl;cout << "long long int指针: " << sizeof(long long int*) << endl;cout << "unsigned long long int指针: " << sizeof(unsigned long long int*) << endl;cout << "signed long long int指针: " << sizeof(signed long long int*) << endl;cout << "float指针: " << sizeof(float*) << endl;cout << "double指针: " << sizeof(double*) << endl;system("pause");return 0;}
//32位输出结果bool: 1char: 1unsigned char: 1signed char: 1short int: 2unsigned short int: 2signed short int: 2int: 4unsigned int: 4signed int: 4long int: 4unsigned long int: 4signed long int: 4long long int: 8unsigned long long int: 8signed long long int: 8float: 4long float: 8double: 8long double: 8bool指针: 4char指针: 4unsigned char指针: 4signed char指针: 4short int指针: 4unsigned short int指针: 4signed short int指针: 4int指针: 4unsigned int指针: 4signed int指针: 4long int指针: 4unsigned long int指针: 4signed long int指针: 4long long int指针: 4unsigned long long int指针: 4signed long long int指针: 4float指针: 4double指针: 4//64位输出结果bool: 1char: 1unsigned char: 1signed char: 1short int: 2unsigned short int: 2signed short int: 2int: 4unsigned int: 4signed int: 4long int: 4unsigned long int: 4signed long int: 4long long int: 8unsigned long long int: 8signed long long int: 8float: 4long float: 8double: 8long double: 8bool指针: 8char指针: 8unsigned char指针: 8signed char指针: 8short int指针: 8unsigned short int指针: 8signed short int指针: 8int指针: 8unsigned int指针: 8signed int指针: 8long int指针: 8unsigned long int指针: 8signed long int指针: 8long long int指针: 8unsigned long long int指针: 8signed long long int指针: 8float指针: 8double指针: 8
结论:
除指针类型外,基本类型所占字节大小在32位和64位系统中保持一致;无论是指向哪种基本类型的指针,在32位系统下均占用4字节内存,在64位系统下均占用8字节内存;int 类型有三种:short int(2字节)、long int(4字节)、long long int(8字节),我们通常使用的int与long int相同,都占用4字节;long float是以前的C语言(传统C语言)用的类型,与 double 同义,在老式的C语言编译器可能会允许该类型,但现在已经被 double 替换掉,C89标准就已经删除了该类型,因此在比较新的C编译器用这个类型时,编译可能会报错。不建议用这个类型,用 double 替换。在标准中,并没有规定long一定要比int长,也没有规定short要比int短。标准时这么说的:长整型至少和整型一样长,整型至少和短整型一样长。这个的规则同样适用于浮点型long double至少和double一样长,double至少和float一样长。至于如何实现要看编译器厂商。
2.3 实型(浮点型)
作用:用于表示小数
浮点型变量分为两种:
单精度float双精度double
两者的区别在于表示的有效数字(包括整数和小数)范围不同。
示例:
int main() {float f1 = 3.14f; // f 表示“float”,编译器默认double,不加“f”表示这个步骤需要将双精度转换为单精度,加“f”表示定义一个单精度double d1 = 3.14;cout << f1 << endl;cout << d1<< endl;cout << "float sizeof = " << sizeof(f1) << endl;cout << "double sizeof = " << sizeof(d1) << endl;//科学计数法float f2 = 3e2; // 3 * 10 ^ 2 cout << "f2 = " << f2 << endl;float f3 = 3e-2; // 3 * 0.1 ^ 2cout << "f3 = " << f3 << endl;system("pause");return 0;}
默认情况下,输出一个小数,系统最多输出6位有效数字。
2.4 字符型
作用:字符型变量用于显示单个字符
语法:char ch = 'a';
C和C++中字符型变量只占用1个字节。字符型变量并不是把字符本身放到内存中存储,而是将对应的ASCII编码放入到存储单元注意1:在显示字符型变量时,用单引号将字符括起来,不要用双引号
注意2:单引号内只能有一个字符,不可以是字符串
示例:
int main() {char ch = 'a';cout << ch << endl;cout << sizeof(char) << endl;//ch = "abcde"; //错误,不可以用双引号//ch = 'abcde'; //错误,单引号内只能引用一个字符cout << (int)ch << endl; //查看字符a对应的ASCII码ch = 97; //可以直接用ASCII给字符型变量赋值cout << ch << endl;system("pause");return 0;}
ASCII码表格:
ASCII 码大致由以下两部分组成:
ASCII 非打印控制字符: ASCII 表上的数字0-31分配给了控制字符,用于控制像打印机等一些外围设备。ASCII 打印字符:数字32-126分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
2.5 转义字符
作用:用于表示一些不能显示出来的ASCII字符
现阶段我们常用的转义字符有:\n \\ \t
示例:
int main() {cout << "\\" << endl;cout << "\tHello" << endl;cout << "\n" << endl;system("pause");return 0;}
2.6 字符串型
作用:用于表示一串字符
两种风格
C风格字符串:char 变量名[] = "字符串值"
示例:
int main() {char str1[] = "hello world";cout << str1 << endl;system("pause");return 0;}
C++风格字符串:注意:C风格的字符串带有中括号,用双引号括起来
string 变量名 = "字符串值"
示例:
int main() {string str = "hello world";cout << str << endl;system("pause");return 0;}
注意:C++风格字符串,需要加入头文件#include <string>
2.7 布尔类型 bool
作用:布尔数据类型代表真或假的值
bool类型只有两个值:
true — 真(本质是1)false — 假(本质是0)
bool类型占1个字节大小
示例:
int main() {bool flag = true;cout << flag << endl; // 1flag = false;cout << flag << endl; // 0cout << "size of bool = " << sizeof(bool) << endl; //1system("pause");return 0;}
2.8 数据的输入
作用:用于从键盘获取数据
关键字:cin
语法:cin >> 变量
示例:
int main(){//整型输入int a = 0;cout << "请输入整型变量:" << endl;cin >> a;cout << a << endl;//浮点型输入double d = 0;cout << "请输入浮点型变量:" << endl;cin >> d;cout << d << endl;//字符型输入char ch = 0;cout << "请输入字符型变量:" << endl;cin >> ch;cout << ch << endl;//字符串型输入string str = "hello";cout << "请输入字符串型变量:" << endl;cin >> str;cout << str << endl;//布尔类型输入bool flag = true;cout << "请输入布尔型变量:" << endl;cin >> flag; // bool类型只要值不为0都为真cout << flag << endl;system("pause");return EXIT_SUCCESS;}
3 运算符
作用:用于执行代码的运算
本章主要讲解以下几类运算符:
3.1 算术运算符
作用:用于处理四则运算
算术运算符包括以下符号:
示例1:
//加减乘除int main() {int a1 = 10;int b1 = 3;cout << a1 + b1 << endl;cout << a1 - b1 << endl;cout << a1 * b1 << endl;cout << a1 / b1 << endl; // 结果为 3,两个整数相除结果依然是整数int a2 = 10;int b2 = 20;cout << a2 / b2 << endl; int a3 = 10;int b3 = 0;//cout << a3 / b3 << endl; //报错,除数不可以为0//两个小数可以相除double d1 = 0.5;double d2 = 0.22;cout << d1 / d2 << endl; // 运算的结果为小数system("pause");return 0;}
总结:在除法运算中,除数不能为0
示例2:
//取模int main() {int a1 = 10;int b1 = 3;cout << 10 % 3 << endl;// 1int a2 = 10;int b2 = 20;cout << a2 % b2 << endl; // 10int a3 = 10;int b3 = 0;//cout << a3 % b3 << endl;// 取模运算时,除数也不能为0//两个小数不可以取模double d1 = 3.14;double d2 = 1.1;//cout << d1 % d2 << endl;system("pause");return 0;}
总结:只有整型变量可以进行取模运算
示例3:
//递增int main() {//后置递增int a = 10;a++; //等价于a = a + 1cout << a << endl; // 11//前置递增int b = 10;++b;cout << b << endl; // 11//区别//前置递增先对变量进行++,再计算表达式int a2 = 10;int b2 = ++a2 * 10;cout << b2 << endl;// 110,a2 = 11//后置递增先计算表达式,后对变量进行++int a3 = 10;int b3 = a3++ * 10;cout << b3 << endl;// 100,a3 = 11system("pause");return 0;}
总结:前置递增先对变量进行++,再计算表达式,后置递增相反
3.2 赋值运算符
作用:用于将表达式的值赋给变量
赋值运算符包括以下几个符号:
示例:
int main() {//赋值运算符// =int a = 10;a = 100;cout << "a = " << a << endl;// +=a = 10;a += 2; // a = a + 2;cout << "a = " << a << endl;// -=a = 10;a -= 2; // a = a - 2cout << "a = " << a << endl;// *=a = 10;a *= 2; // a = a * 2cout << "a = " << a << endl;// /=a = 10;a /= 2; // a = a / 2;cout << "a = " << a << endl;// %=a = 10;a %= 2; // a = a % 2;cout << "a = " << a << endl;system("pause");return 0;}
3.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值
比较运算符有以下符号:
示例:
int main() {int a = 10;int b = 20;cout << (a == b) << endl; // 0 ,有优先级cout << (a != b) << endl; // 1cout << (a > b) << endl; // 0cout << (a < b) << endl; // 1cout << (a >= b) << endl; // 0cout << (a <= b) << endl; // 1system("pause");return 0;}
注意:C和C++ 语言的比较运算中,“真”用数字“1”来表示, “假”用数字“0”来表示。
3.4 逻辑运算符
作用:用于根据表达式的值返回真值或假值
逻辑运算符有以下符号:
示例1:逻辑非
//逻辑运算符 --- 非int main() {int a = 10;cout << !a << endl; // 0cout << !!a << endl; // 1system("pause");return 0;}
总结:逻辑非运算符总结: 真变假,假变真
示例2:逻辑与
//逻辑运算符 --- 与int main() {int a = 10;int b = 10;cout << (a && b) << endl;// 1a = 10;b = 0;cout << (a && b) << endl;// 0 a = 0;b = 0;cout << (a && b) << endl;// 0system("pause");return 0;}
总结:逻辑与运算符总结:同真为真,其余为假
示例3:逻辑或
//逻辑运算符 --- 或int main() {int a = 10;int b = 10;cout << (a || b) << endl;// 1a = 10;b = 0;cout << (a || b) << endl;// 1 a = 0;b = 0;cout << (a || b) << endl;// 0system("pause");return 0;}
逻辑或运算符总结:同假为假,其余为真
如果觉得《黑马程序员C++基础入门(一)——C++初识 - 变量类型 - 运算符》对你有帮助,请点赞、收藏,并留下你的观点哦!