C++——简单程序设计
1、一个简单的程序
#include <iostream> //iostream是头文件,用来说明要使用的对象的相关信息。 using namespace std; //使用命名空间,解决类重名的问题,不同的名字空间中的同名类不会引起程序错误。 int main() //主函数——执行一定的功能的模块,是程序执行的入口。一个C++程序有且只有一个主函数。 { cout<<"Hello!\n"; //cout是输出流类的对象。 cout<<"Welcome to c++!\n"; } //输出“Hello!Welcome to C++!”
2、C++字符集
大小写英文字符,数字字符,某些特殊字符。
3、C++的词法记号
关键字 C++预定义的单词,不能用作别的含义
标识符 程序员定义的实体名称,变量名、函数名、类名等
文字 直接使用符号表示的变量
操作符 运算符号,+、-...
分隔符 用于分隔程序正文等 ,; {}等
空白符 空格、回车,tab、注释等产生的符号,C++不限制空白符的位置和数量
C++程序标识符以大小写或下划线开始,对大小写敏感。
4、变量和常量
#include <iostream> using namespace std; int main() { const int PRICE=30; //声明整型常量30,并给一个名字PRICE,在程序运行过程中不能改变。 int num,total; //声明整型变量,可以在程序运行过程中被概念。 float v ,r,h; //声明浮点型变量 num=10; //声明常量10,赋给变量num。 total=num*PRICE; cout<<total <<endl; r=2.5; h=3.2; v=3.14159*r*r*h; //r h默认为double类型,而v是float类型,会出错。因为double比float更精确。 cout<<v<<endl; }
变量需要先声明再使用。
字符常量是用单引号引用起来的一个字符,用字符变量来存储。如变量char c='a',a是字符常量。值得注意的是字符串常量占用两个字节,而字符变量占用一个字节,字符窜“china”在内存中会存储为china\0,0作为结束标记,字符串不能赋给字符变量。
布尔类型
false and ture
数据类型转换
int a; float(a);//强制转换整型a为浮点类型。
变量的存储类型
auto自动类型,会存放在临时内存空间中,不说明会默认;
register存放在寄存器中,编译器会自动把使用频繁的变量放到寄存器;
extern在所有函数和程序段中都可以用的;
static固定地址存放的,整个程序运算过程中都有效的。
5、运算符
基本运算符 先乘除后加减,同级自左向右。自增自减(先增减和后增减)
赋值运算符 “=”,n=n+6
复合运算符 a*=8等价于a=a*8
逗号运算符 表达式1,表达式2,先求解表达式1,再求解表达式2,结果是表达式2的值,a=8,a=9,结果a=9
关系运算符 关系运算结果只能是Bool类型,运算符的优先级是孰大孰小高于是否相等
逻辑运算符 非!与&& 或||,结果是bool类型
条件运算符 表达式1?表达式2:表达式3,表达式1的值为bool类型,若果是真,表达式的值是表达式2,若果是假,表达式的结果是表达式3
sizeof运算符 sizeof(类型名或者表达式),求解类型变量或表达式所占的内存字节数
位运算 按位或|、按位与&、按位异或^、按位取反~、移位运算《左移,低位补0,高位舍弃,》右移低位舍弃,高位补0(无符号)或者补符号位(有符号)
关于复杂表达式建议用括号将运算的逻辑关系表示清楚或者分成若干个表达式。
6、隐含转换
当运算操作数类型不一致的时候,编译器会自动进行类型转换,由低位向高位转换。
char short int unsiged long unsiged_long float double
7.语句
顺序语句
分支语句 if(表达式)语句1;else语句2;及其嵌套、switch(表达式){case常量表达式:语句;break;default:语句;break;}。
循环语句 while(变量表达式){必须包含改变变量表达式值的语句}。
do{}while(变量表达式);先执行循环体后判断条件。
for(语句1;语句2;语句3)语句 其中语句1是循环前求解的,语句2为真是执行循环体,每次执行一循环计算语句3的值;
break是指从循环内部跳出,执行逻辑上的下一个语句;continue跳出本次循环,重新判断是否继续循环;
typedef语句 typedef 已有类型名新类型名如typedef double a 那么a v;就相当于double v;
枚举类型enum enum weekday{a,b,c,d,e,f,g};只需要将变量值一一列举出来就构成一个新的类型,且该变量的值已经被限制在列举的范围内了,枚举元素按常量处理,不能进行赋值,具有默认值,为0,1,2……,但是可以对它们进行声明的同时给其指定值,
enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}; #include <iostream> using namespace std; enum game_result {WIN, LOSE, TIE, CANCEL}; int main() { game_result result; //声明变量时,可以不写关键字enum enum game_result omit = CANCEL; //也可以在类型名前写enum int count; for (count = WIN ; count <= CANCEL ; count++) { result = (game_result)count; //整型值不能直接赋值给枚举变量,如果要赋值,需要进行强制类型转换。 if (result == omit) { cout << "The game was cancelled\n"; } //运行结果:The game was played and we won! else The game was played and we lost. { The game was played cout << "The game was played "; The game was cancelled if (result == WIN) cout << "and we won!"; if (result == LOSE) cout << "and we lost."; cout << "\n"; }}}
结构体 不同数据类型的数据组成的集合体,声明结构形式如下:
struct 结构名{数据类型 成员名;……};如struct student{int num; char name[20];char sex;}结构体成员的引用:结构变量名.成员名。
#include <iostream> #include <iomanip> using namespace std; struct student //学生信息结构体 { int num; //学号 char name[20]; //姓名 char sex; //性别 int age; //年龄 }stu={97001,"Lin Lin",'F',19};//stu是结构体student的一个变量,这里是变量初始化 int main() { cout<<setw(7)<<stu.num<<setw(20)<<stu.name<<setw(3)<<stu.sex <<setw(3)<<stu.age;} //运行结果: 97001 Lin Lin F 19
联合体 数据共享和节省内存空间,按照最大类型的数据分配空间,其声明和引用和结构体一样,但作用不同。