C++变量
- 1.C++ 命名规则
- 2.C++ 命名规范
- 3.C++ 数据类型
- sizeof ()
- 4.声明和使用变量
- 4.1使用整型变量
- 4.2使用单精度浮点型变量
- 4.3使用双精度浮点型变量
- 5.附送-cout 设置宽度,对齐方式
- 6.算术运算符和表达式
- 6.1除法、取余
- 6.2自加、自减
- 7.强制类型转换
《老九学堂C++课程》《C++ primer》学习笔记。《老九学堂C++课程》详情请到B站搜索《老九零基础学编程C++入门》
-------------简单的事情重复做,重复的事情用心做,用心的事情坚持做(老九君)---------------
程序员通过指令控制计算机
指令和数据在存放在内存中–寄存器,读写速度块。
一般说的内存条,内存条RAM。
内存的基本单位是bit。
变量:计算机中一块特定的内存空间
通过变量的名字快速找到变量,C++中使用命名空间(namespace)来避免重名问题。
1.C++ 命名规则
- 首个字符:字母,下划线
- 其他字符:字母,下划线,数字
- 变量名不能是关键字/保留字
关键字:C++编译器预留出来的76个单词,用户变量名不能与之相同。在IDE中会以特殊的颜色显示出来,例如:int,calss,double
2.C++ 命名规范
一些命名虽然不会有语法错误,但是不好。一个好的程序员,需要掌握一定的命名规范。
- 不要使用拼音
- 不要使用单个英文单词
- 使用有含义的英文单词,注重日常积累;mokey_sun vs houzi_sun
1.本地变量:小写,下划线连接
2.全局变量:以g_作为前缀,建议尽量少用全局变量
3.预处理指令: #defined 后全大写,不加语句结束符号;
4.函数名:单词首字母大写,无下划线连接
5.命名空间名字:全小写
6.类名称:单词首字母大写,无下划线连接
7.注释:文档注释,在文件的开头,包括版本,许可,作者,日期,功能;函数注释,注释于函数之前,描述函数功能以及用法‘
8.括号:大括号放在函数,类名称的下一行
3.C++ 数据类型
(20201106-25 数据类型小节)
–数值型
----整型-int, short, long, long long, bool, long bool
----非整型-float, double long double
–非数值型-string,
数据类型 | 类型符号说明符 | 位数 | 取值范围 |
---|---|---|---|
整型 | int | 32位-4个字节 | |
短整型 | short int | 16位-2个字节 | |
长整形 | long int | 32位(用int 和long么啥区别) | |
长整形 | long long | 64位(C++11的标准) | |
单精度浮点型 | float | 32位 | |
双精度浮点型 | double | 64位(存储位数较多的小数) | |
字符型 | char | 8位(C++中隶属于整型) | [-128,127] |
英文字符用char,中文字符要用W char(宽字符)
c++ 中的其他常用数据类型: ,枚举类型,自定义类型,指针类型(少用指针,多用引用),空类型(void)
size_t # 其实是一个无符号的整形,通过别名定义出来的
typedef unsigned int size_t
输出int 数据类型的上界 INT_MAX:
INT_MAX输出报错的话,可以引入一个头文件
# include <climits>
INT_MAX其实是一个宏定义常量,标识符号是一个
#define INT_MAX 21247XXXXX //
sizeof ()
用来测量数据类型的长度,单位是字节。c++中默认的小数是double型,后面+ 一个f变成浮点型.
#include <iostream>
using namespace std;
int main(){// sizeof 用来测量数据类型的长度cout << sizeof(double) << endl;cout << sizeof(long double) << endl;cout << sizeof(3.14) << endl;cout << sizeof(3.14f) << endl;return 0;
}
4.声明和使用变量
变量声明即定义一个变量,声明的格式如下。可以在声明的同时赋初值(建议使用这种方式);也可以仅声明,后面再赋值。(变量第一次被赋予值的操作叫变量的初始化)
数据类型 变量名; // 仅声明
数据类型 变量名=value; //声明并初始化
4.1使用整型变量
一条声明语句可以声明多个相同类型的变量,编码规范建议一行代码只做一件事情。
int salary1, salary2, salary3;
int num1 = 10, num2 = 8;
使用变量,打印出来
cout << “小明的收入是:” << salary << endl;
4.2使用单精度浮点型变量
浮点型变量:32位,4个字节,6-7位有效数字,可以在数值的末尾加一个f
输出超出有效位float 数会产生自动截断:
int main(){float num = 12345.12345678;std::cout << num << std::endl;return 0;
}
12345.1
使用float类型变量的例子: 计算一个圆柱体的体积
#include <iostream>
#include <cmath>
int main(){// 已知圆柱体的半径和高,求圆柱体的体积const float PI = 3.14; //定义了一个float 类型的常量,无法改变 float radius = 4.5f;float height = 90.9f;//double volume = PI * radius * radius * height;double volume = PI * pow(radius, 2) * height;std::cout << "体积是:" << volume << std::endl;return 0;
}
体积是:5779.88
4.3使用双精度浮点型变量
直接输出
int main(){// 输出double类型的数字// 直接输出的是6 位有效数字 3.33333std::cout << doublenum << std::endl;return 0;
}
3.33333
控制位数输出,强制以数字的方式显示
#include <iomanip>
using namespace std;
int main(){cout << fixed; //强制以小数的方式显示,cout << setprecision(2); // 控制小数点后两位数字double doublenum = 10.0 / 3.0;cout << doublenum << endl;return 0;
}
3.33
控制输出宽度
int main(){//设置输出宽度cout << setw(8) << "|" << 3.14 << "|";return 0;
}
输出
|3.14||3.14|
| 3.14|
注意单精度浮点型的有效数字只有6-7位,在数字较大市,会产生截断误差
演示单精度浮点型和双精度浮点型的精度问题。
#include <iostream>
#include <cmath>
#include <iomanip>using namespace std;
int main(){// 演示单精度浮点型和双精度浮点型精度问题float numFloat = 10 / 3.0;double numDouble = 10 / 3.0;cout << fixed;cout << "numFloat: " << numFloat << endl;cout << "numDouble: " << numDouble << endl;cout << "numFloat: " << numFloat * 10000 << endl;cout << "numDouble: " << numDouble * 10000 << endl;cout << "numFloat: " << numFloat * 1000000000 << endl;cout << "numDouble: " << numDouble * 1000000000 << endl;return 0;
}
numFloat: 3.333333
numDouble: 3.333333
numFloat: 33333.332031
numDouble: 33333.333333
numFloat: 3333333248.000000 //精度损失严重
numDouble: 3333333333.333333
5.附送-cout 设置宽度,对齐方式
#include <iostream>
#include <iomanip>// #include <windows.h>
// SetConsoleTile("控制台标题")
// 在window系统之下才好用
using namespace std;
int main(){// 转义字符cout << "\a" << endl; //警报声,没听到double attack1 = 272;double attack2 = 250;double attack3 = 240;// 默认输出右对齐cout << setw(8) << attack1 <<setw(8) << attack2 <<setw(8) << attack3 << endl;// 设定输出左对齐cout << left;cout << setw(8) << attack1 <<setw(8) << attack2 <<setw(8) << attack3 << endl;// 设定填充方式cout << setfill('_'); // 单引号和双引号右区别,双引号是要报错的。cout << setw(8) << attack1 <<setw(8) << attack2 <<setw(8) << attack3 << endl;return 0;
}
输出
272 250 240
272 250 240
272_____250_____240_____
6.算术运算符和表达式
算术运算符:
一元运算符:++,–
二元运算符:+,-,*,、,%‘
表达式:运算符+操作数组成表达式
6.1除法、取余
#include <iostream>
using namespace std;
int main(){// 运算符和表达式int num1 = 5, num2 = 2;cout << num1 / num2 << endl;// 取模结果的符号和第一个操作数相匹配// 取模的应用场景: 取摸个数字的个位 15 % 10,45天式一个月零几天 45 % 30cout << num1 % num2 << endl;cout << (-1 * num1) % num2 << endl;cout << num1 % (-1 * num2) << endl;
}
输出
2
1
-1
1
6.2自加、自减
其实自加和自减再单独使用的时候前置和后置都没有区别,但是在和其他算子连用时才会体现出这个区别。
#include <iostream>
using namespace std;
int main(){// 运算符和表达式// 自加++和自减--// 放在后面的就是,先参与运算,自己再加; 放在前面就是自己先加,然后再参与运算。都是从自己出发// int num3 = (num2++) - (--num2); // num3 = (2)- (1) = 1,这个分析是错的,这个编译器页过不去,会报错// warning: unsequenced modification and access to 'num2' [-Wunsequenced]int num4 = num1 - (--num2); // 至少这样是可以的cout << num2 << "\t" << num4 << endl;return 0;
}
输出
1 4
7.强制类型转换
类型转换原则:把表示范围小的类型值, 转换到表示范围大的类型值
short -> int -> long -> float -> double
强制类型转换语法
(类型名) 变量或数值
#include <iostream>
#include <cmath>
#include <iomanip>// #include <windows.h>
// SetConsoleTile("控制台标题")
// 在window系统之下才好用
using namespace std;
int main(){// 类型转换int num1 = 5, num2 = 2;// 两个整型相除的结果就是整型,将其赋值给一个double类型的变量,num3 = 2.0double num3 = num1 / num2;cout << num3 << endl;// 先将整型5转换成double 类型的5.0,然后进行浮点型的除法运算,运算结果是2.5double num4 = (double)num1 / num2;cout << num4 << endl;return 0;
}
输出
2
2.5