C++基础入门
1 C++初识
1.1 第一个C++程序
编写c++程序分为四步
-
创建项目
-
创建文件
-
编写代码
-
运行程序
1.1.1 创建项目
我使用的是Visio Stdio2017社区版
1.1.2 新建文件
1.1.3 编写代码
这段是默认的格式
#include<iostream>
using namespace std;
int main()
{system("pause");return 0;
}
输出hello,world
#include<iostream>
using namespace std;
int main() //main函数每个程序只有一个,意思是一个程序不管有多少个文件,只能有一个main函数
{cout << "hello,world" << endl; //这里是endl的字母l不是数字1,这行代码就是输出hello,worldsystem("pause");return 0;
}
1.1.4 运行程序
点击“本地Windows调试器”即可运行出hello,world
1.2 注释
两种格式
- 单行注释:一行代码的上方或者一条语句的末尾,对该行代码说明 形式://
- 多行注释:一行代码的上方,对该段代码进行整体说明 形式: /* */
1.3 变量
作用:给一段指定的内存空间起名,方便操作这段内容
语法:数据类型 变量名=初始值;
变量就是便于管理内存空间,内存空间一般是以16进制编号,不便于记忆,可以使用变量a代替0x0000,0x0000也可以使用。
变量名是任意的。
1.4 常量
两种格式
- #define 常量名 常量
- const 数据类型 变量名=初始值;
#include<iostream>
using namespace std;
#define DAY 7
int main()
{const int month = 12;cout << "每年有:" << month << "个月" << endl;cout << "每个星期有:" << DAY << "天" << endl;system("pause");return 0;
}
1.5 关键字
被系统使用的关键字可以自行查阅。
1.6 标识符命名规则
- 只能是数字、字母、下划线组成
- 开头只能是字母或者下划线
- 标识符区分大小写
2 数据类型
2.1 整型
- 数据类型意义:给变量分配一个合适的内存空间
- c++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同
- short占2个字节,int占4个字节,long占4字节(Windows),long long占8字节
实例
2.2 sizeof关键字
作用:利用sizeof可以统计数据类型所占内存的大小
语法:sizeof(数据类型/变量)
实例:
#include<iostream>
using namespace std;
int main()
{short num1 = 10;int num2 = 10;long num3 = 10;long long num4 = 10;cout << sizeof(num1) << endl;cout << sizeof(num2) << endl;cout << sizeof(num3) << endl;cout << sizeof(num4) << endl;system("pause");return 0;
}
结果:2 4 4 8
结论:short<int<=long<=long long
2.3 实型(浮点型)
作用:用于表示小数
浮点数分为两种类型:
- 单精度float 占4个字节, 7位有效数字(有效数字算整数)
- 双精度double 占8字节, 15-16位有效数字
c++编辑器默认认为小数是双精度的浮点数,要在单精度小数后加一个f表示为单精度
c++默认情况下输出一个小数会显示出6位有效数字
科学计数法
示例:float f2=3e2; 输出结果为300
float f2=3e-2; 输出结果为0.03
示例:
#include<iostream>
using namespace std;
int main()
{float f1 = 3.14;float f2 = 3.14f;double d1 = 10.002;float f3 = 3e2;float f4 = 3e-2;float f5 = 3.1415926;double d2 = 3.1415926;cout << f1 << endl;cout << f2 << endl;cout << d1 << endl; cout << f3 << endl;cout << f4 << endl;cout << f5 << endl;cout << d2 << endl; //double和float都一样,只能输出6位有效数字system("pause");return 0;
}
结果:
3.14
3.14
10.002
300
0.03
3.14159
3.14159
2.4 字符型
作用:字符型变量用于显示单个字符
语法:char ch=‘a’;
这个只能放一个字符,只占用一个字节的内存
示例
#include<iostream>
using namespace std;
int main()
{//1.定义一个char类型变量char ch = 'a';//2.计算char类型变量空间大小cout << sizeof(ch) << endl;//3.常见错误/*char ch ="a" 将引号弄成双引号;char ch ='abcdefg' 将赋值字符写成多个字符;*///4.计算字符的ASCII值,直接利用强制类型转换把字符变为数字cout << (int)ch << endl;system("pause");return 0;
}
2.5 转义字符
作用:用于表示一些不能显示出来的ASCII字符
常用的\n \t \
示例
#include<iostream>
using namespace std;
int main()
{//1.\n的作用就是代替endlcout << "hello,world\n" ;//2.\\代表输出一个‘\’cout << "\\"<<endl;//3.\t是为了保持美观,\t会保持8个位置,包括你已经有的字符cout << "a\thello,world" << endl;cout << "aa\thello,world" << endl;cout << "aaa\thello,world"<< endl;system("pause");return 0;
}
结果:
hello,world
\
a hello,world
aa hello,world
aaa hello,world
2.6 字符串型
作用:用于表示一串字符
两种风格:
- C语言风格:格式 char 变量名 []=“xxxx”;
- string 格式:string 变量名=“xxxx”;
示例
#include<iostream>
#include<string>
using namespace std;
int main()
{//1.使用c语言的字符串char str1[] = "hello,world";cout << str1 << endl;//2.使用c++的string,要注意写头文件---#include<string>string str2 = "wjk";cout << str2 << endl;system("pause");return 0;
}
c++无法读取编译器命令行的解决办法
后来发现是TMP/TEMP环境变量路径有空格的问题,更新环境变量后需要重新启动VS再测试。
我是重新找了个C盘位置建了个temp文件夹,目前来说还没有问题。
很奇怪为什么突然路径里不能有空格,但也没法求证。
2.7 布尔类型
作用:布尔类型代表真或假的值
true的含义为真,(本质是1)
false的含义为假,(本质是0)
bool类型只占1个字节大小
示例:
int main()
{//1.创建布尔数据类型bool flag = true;cout << flag << endl;flag = false;cout << flag << endl;//2.查看bool类型所占空间cout << sizeof(flag) << endl;system("pause");return 0;
}
2.8 数据的输入
作用:用于从键盘获取数据
关键字:cin
语法:cin>>变量
示例:
int main()
{//1.整型int a = 0;cout << "请给整型变量a赋值:"<< endl;cin >> a;cout << "整数a为:"<<a << endl;//2.浮点型float b = 1.0f;cout << "请给浮点型变量b赋值:" << endl;cin >> b;cout <<"浮点数b为:"<< b << endl;//3.字符型char ch = 'a';cout << "请给字符型变量ch赋值:" << endl;cin >> ch;cout <<"字符ch的值为:"<< ch << endl;//4.字符串型string str = "abc";cout << "请给字符串型变量str赋值:" << endl;cin >> str;cout << "字符串str的值为:"<<str << endl;//5.布尔型bool flag = true;cout << "请给布尔变量flag赋值:" << endl;cin >> flag;cout <<"布尔型变量flag的值为:"<< flag<< endl;system("pause");return 0;}
其中,布尔变量flag不能输入true,真值只能给数字非0值,假值给0
3 运算符
作用:用于执行代码的运算
运算符类型 | 作用 |
---|---|
算术运算符 | 用于处理四则运算 |
赋值运算符 | 用于将表达式的值赋给变量 |
比较运算符 | 用于表达式的比较,并返回一个真值或假值 |
逻辑运算符 | 用于根据表达式的值返回真值或假值 |
3.1 算术运算符
作用:用于处理四则运算
算术运算符包括以下符号:
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | -3 | -3 |
+ | 加 | 10+5 | 15 |
- | 减 | 10-5 | 5 |
* | 乘 | 10*5 | 50 |
/ | 除 | 10/5 | 2 |
% | 取模(取余) | 10%3 | 1 |
++ | 前置递增 | a=2;b=++a; | a=3,b=3; |
++ | 后置递增 | a=2;b=a++; | a=3,b=2; |
– | 前置递减 | a=2;b=–a; | a=1,b=1; |
– | 后置递减 | a=2;b=a–; | a=1,b=2; |
两个数相除,除数不可以为0, 0做除数会报错,取模运算中也不能为0
两个小数不能做取模运算,只有整数可以进行取模运算
两个整数相除,结果为整数
cout <<0.5/0.25<< endl;
结果为2
3.2 赋值运算符
作用:用于将表达式的值赋给变量
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
= | 赋值 | a=2;b=3; | a=2;b=3 |
+= | 加等于 | a=0;a+=2; | a=2 |
-= | 减等于 | a=3;a-=2; | a=1 |
*= | 乘等于 | a=3;a*=3; | a=9 |
/= | 除等于 | a=10;a/=2; | a=5 |
%= | 模等于 | a=10;a%=2; | a=0 |
3.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值
运算符 | 术语 | 示例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | 0 |
!= | 不等于 | 4!=3 | 1 |
& |