#include<iostream> //引用标准输入输出库
#include<cmath> //使用数学函数
using namespace std; //使用命名空间
int main() //主函数
{
return 0;
}
程序注释:从整体描述程序操作过程,可出现在主程序中 //或/* */
预编译:以#开头
库包含:预先做好的一些工具程序,每个库要提供一个接口,把库的接口放在源文件中,以便编译器检查程序中对库的调用是否正确,用#include表示。
#include<filename> 系统库 #include"filename" 用户自定义库
名字空间:把一组程序实体组合在一起构成的作用域。 名字空间名::实体名
同一个名字空间中不能有重名,不同的名字空间中可以定义相同的实体名。
标识符:用来对C++程序中的常量、变量及用户自定义函数名称进行标识的符号。
①首字母:字母、下划线;②其余部分:数字、字母、下划线(任意多个)
注意:不能是C++保留关键字(C语言中有特定含义的词)如:asm,auto,catch,dynamic_cast,enum,extern,goto,inline,overload,register,throw,volatile,try,union
建议常量所以字母应大写,如:const int MAX=100;(常变量)
变量:名称、值、类型 类型名 变量名1,变量名2…变量名n;
类型名 变量名=初值; 类型名 变量名(初值);
数据类型:数据的取值范围、可操作范围
①基本数据类型:整型、浮点型、字符型、布尔型;
②构造数据类型:数组、结构、联合、枚举。
整型(GCC编译器)0表示正数,1表示负数
基本型 int 4byte -2∧31~(2∧31-1) 0~2∧32-1(unsigned)
长整型 long 4byte -2∧31~(2∧31-1)0~2∧32-1
短整型 short 2byte -2∧15~(2∧15-1)0~2∧16-1
long long 8byte -2∧63~(2∧63-1) 0~2∧64-1、
原数:用符号位和数值表示符号值,数值部分用二进制表示。
例如:[-62]原=10000000 00111110 2个字节
10111110 1个字节
十六进制 0xC 八进制 014
注意:整型数的溢出
浮点数:符号位+阶码(N)+尾数(M)
①单精度:float 4byte 精确度6~7位 10∧-38~10∧32 1+8+23
②双精度:double 8byte 精确度15~16位 10∧-307~10∧308 1+11+52
科学计数法:尾数*10∧指数 尾数E/e指数 (指数必须为整数;尾数不能为空) 如:123e2=12300 2.25E-3=0.00225
字符型:char 用单引号括起来的单个字符。输入输出时作字符,运算时作数字(ASCII代码)
0 48 A 65 a 97 空格 32 换行符 10
字符'1' 1个字节 ; 整数1 2或4个字节;
可打印字符:大小写字母、数字、标点、符号、空格;
非打印字符:换行和报警字符、响铃等控制字符。转义序列
布尔型:1个字节,true(1)或false(0),可进行逻辑运算。
枚举类型:enum 枚举类型名 {元素表};枚举类型中的每个元素是用一个整数代码表示的,不管何时定义一个新的枚举类型,这些元素都将用从0开始的连续整型数编码。对于枚举类型变量只可进行赋值和比较运算,不能将整数赋给枚举类型变量。事实上,布尔类型就是C++事先定义好的一个枚举类型。
例如:enum weekdayT {Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
enum weekdayT {Sunday=1,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};
常量:整型、实型、字符、字符串。(不可以把一个字符串常量赋给一个字符常量 “A”=‘A'+'\0’)
长整型(long int):在整数后加一个"l"或"L"。
C++中实型常量都被作为double型处理,若作float处理,数值后加上f或F
符号常量:#define 符号常量名 字符串 const 类型名 符号常量名 =表达式
auto类型说明符(必须赋初值,编译器自行判断且定义在同一个auto序列的变量必须推导成同一类型),decltype类型指示符(例如:int a,b;decltype (a+b) c;编译器并不计算a+b的值,而是以(a+b)的类型作为c的类型)constexpr必须是编译时的常量。类型别名 typedef/using 例如:typedef int INTEGER; using REAL=double;
输入输出(流)cin.get(ch)或ch=cin.get()(可接受任何字符包括空白字符)
cin.ignore()清除键盘缓冲区的一个字符;
cin.ignore(100,'\n')清除换行符之前最多一百个字符
setprecision控制输出的有效数字,只对浮点数起作用,一经设置对后面输出的所以浮点数起作用showpoint输出浮点数末尾的0,若未设置有效数字,则默认为6位有效数字 使用setprecision和fixed保留n位小数 setw(n)在输出时分配n个字符的输出宽度,默认右对齐输出,仅对紧随其后的一次输出有效。cout<<left/right可设置左对齐或右对齐。setfill(char)可设置填充的字符。
prinft输出浮点数时默认输出6位小数,需包含cstdio文件 例如:scanf("%d%f%lf%c",&i,&f,&d,&ch)(当两个%d之间有逗号,则输入时两个数字也需以逗号分隔)
算术运算
自动类型转换:非标准类型转化成标准类p型,占用空间少的向占用空间多的靠拢,数值范围小的向数值范围大的靠拢。long double>double>float>long long>unsigned int>int>short,char,bool
整型转换成字符型时,直接取整型数据的最低8位。
强制类型转换:(类型名)表达式 或 (类型名) (表达式)
静态转换(static_cast:可用于任何类型的转换)、重解释转换(reinterpret_cast)、常量转换(const_cast)、动态转换(dynamic_cast) 转换类型<类型名>(表达式)
赋值运算
除“-”外所有运算符都是二元运算符,“-”可一元可二元。%运算符的两个操作数都是整型数。
赋值嵌套 多重赋值语句 复合赋值运算符(+= -= *= /= %=) 自增自减运算符(++,--)
注意:前缀与后缀不同 例如:m=n++ m=n;n++; m=++n n=n+1;m=n;
c=(++a)*(b++) ++a;c=a*b;b++; cout<<(-a++) cout<<-a;a++;