C++基础部分(第二章 C++简单程序设计)

第二章 C++简单程序设计

2.1 C++语言概述

C++是从C语言发展演变而来的,所以在描述C++语言之前可以先描述C语言的特点。

C语言的优点:语言简洁灵活、运算符和数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言和汇编语言的优点。
与高级语言相比,C语言可以直接访问物理地址;与汇编语言相比,C语言具有良好的可读性和可移植性。
C语言的不足之处在于,它仍然是面向过程的编程语言,因此与其他面向过程的编程语言一样,已经不能满足运用面向对象方法开发软件的需求。

C++语言的主要特点表现在两个方面,一是尽可能的兼容C语言,二是支持面向对象的方法,对C的类型系统进行了改革和扩充,因此C++比C更安全。正是因为C++兼容了C,所以导致C++与纯面向对象语言Java不同,它是一个既支持面向过程,又支持面向对象的编程语言。

下面通过一个面向过程的简单程序,来了解程序是如何控制计算机的操作

#include <iostream>
using namespace std;
int mian(){
    cout<<"helloword"<<endl;
    return 0;
}
其中,main是主函数名,函数体用大括号包括,C++程序中,必须有且只能有一个名为main的函数,它表示了程序执行的起点。mian函数之前的int
表示这个函数的返回值类型为int型。
#include <iostream>表示编译器在对程序进行预处理时,需要将iostream中的代码嵌入到程序中该指令所在的地方,#include表示的是预处理指
令,文件iostream中声明了程序中需要的输入输出操作的有关信息。 using namespace std 是针对命名空间的指令。

标识符:标识符是程序员定义的单词,它命名程序正文中的一些实体,如函数名变量名类名对象名等。构成规则如下:

  1. 以大写字母、小写字母或下划线开始(数字不能打头)。
  2. 可以由大写字母、小写字母、下划线或数字组成。
  3. 大写字母和小写字母表示不同的标识符。
  4. 不能是C++关键字。

2.2 基本数据类型和表达式

在人们的日常生活中,会产生各式各样的数据,所以对于计算机程序想要解决问题时,数据就会作为程序处理的对象,不同的数据对应不同的处理方式,从而通过各种表达式进行计算最终得到用户看的懂得答案。

基本数据类型

类型名长度(字节)取值范围
bool1false,true
char1-128~127( − 2 7 -2^7 27 ~ 2 7 − 1 2^7 -1 271)
signed char1-128~127( − 2 7 -2^7 27 ~ 2 7 − 1 2^7 -1 271)
unsigned char10~255( 0 0 0 ~ 2 8 − 1 2^8 -1 281)
short(signed short)2-32768~32767( 2 15 2^{15} 215 ~ 2 15 − 1 2^{15} -1 2151)
unsigned short20~65535( 0 0 0 ~ 2 16 − 1 2^{16} -1 2161)
int(signed int)4-2147483648~2147483647( 2 31 2^{31} 231 ~ 2 31 − 1 2^{31} -1 2311)
unsigned int40~4294967295( 0 0 0 ~ 2 32 − 1 2^{32} -1 2321)
long(signed long)4-2147483648~2147483647( 2 31 2^{31} 231 ~ 2 31 − 1 2^{31} -1 2311)
unsigned long40~4294967295( 0 0 0 ~ 2 32 − 1 2^{32} -1 2321)
float4 3.4 ∗ 1 0 − 38 3.4*10^{-38} 3.41038 ~ 3.4 ∗ 1 0 38 3.4*10^{38} 3.41038
double8 1.7 ∗ 1 0 − 308 1.7*10^{-308} 1.710308 ~ 1.7 ∗ 1 0 308 1.7*10^{308} 1.710308
long double8 1.7 ∗ 1 0 − 308 1.7*10^{-308} 1.710308 ~ 1.7 ∗ 1 0 308 1.7*10^{308} 1.710308

从上面的表格可以看出来,C++的基本数据类型分别是bool(布尔型)、char(字符型)、int(整型)、float(浮点型)以及double(双精度浮点型)。表格中可以看出各种数据类型所占得字节数,而在计算机中1字节等于8位,所以可以算出不同数据类型的取值范围是多少。其中关键字short和long,以及关键字signed和unsigned称为修饰符。
short修饰int是可以省略,long可以修饰int和double
signed和unsigned可以修饰int和char,分别表示有符号和无符号。有符号的整数在计算机中以二进制补码的形式进行存储,最高位表示符号位。无符号的整数只能是正数,在计算机类以绝对值存放。

常量

所谓常量就是在程序运行过程中始终不能发生改变的量。

  • 整型常量:十进制(0-9)、八进制(0-7)和十六进制(0-9,A-F)。十进制的数字前面应该带有正负号,而八进制中数字部分要以0开头,十六进制则是以0x开头。整型常量可以用l或L作为后缀,表示长整型,而后缀字母u或U则是无符号整型,也可以L和U同时带有。
  • 实型常量:分为一般形式和指数形式,实型常数通常默认为double,如果后缀为f或F,那么该常数为浮点型
  • 字符常量:以单引号括起来的一个字符。
  • 字符串常量:是一对双引号括起来的字符序列。由于双引号是字符串的限定符,所以如果要将双引号表示出来则需要使用转义。在C++中字符串存放方式与Java中有些不同,就是存放时,按照字符串中字符的顺序,每一个字符站一个字节,并在末尾添加\0作为结束标识。所以在C++中字符串的长度要比Java的长一个字节。
  • 布尔常量:布尔常量只有两个,true 或者 false。

变量

在程序执行过程中可以发生变化的量称为变量。我们在使用变量时应该首先声明其类型和名称,声明变量不一定会引起内存的分配,只是告诉编译器这个变量的有关信息,而在定义变量时需要给变量分配内存空间,用于存放对应类型的数据。大多数情况下,声明变量和定义变量是同时实现的,只有要声明外部变量时除外。
变量也具有存储方式,如下

  • auto存储:采用堆栈式分配内存空间,属于暂时性存储,其存储空间可以被若干变量多次覆盖使用。一般来说在程序中没有特意的指定变量的存储类型的化默认为auto存储也就是自动存储,在函数调用结束后被释放。
  • register存储:存放于通用寄存器中。通常变量存储于内存中,但是如果需要对变量频繁的读写是,那么会消耗存取时间。C++中可以将变量的值存放于cpu中的寄存器中,这样就不会去内存中调用变量的值,而是直接从寄存器中获取。
  • extern存储:在所有函数和程序段中均可使用。也就是说可以在不同的源文件中调用这类存储的变量。
  • static存储:在内存中以固定地址存档,在整个程序运行期间都有效。

表达式

  • &&和||运算符具有短路特性。意思就是对于&&,如果前面的操作数值为false,那么就不会对后面的操作数求值。同样对于||时,第一个操作数求值为true,那么就不会对第二个操作数求值。
  • 移位运算符,左移就是将一个数的二进制向左移指定位数,左移后低位补0,高位舍去,也就是移位后右边缺的部分补0,左边出去的部分舍去。(左移起到的效果就是乘 2 n 2^n 2n,其中n为移位的位数)。相反右移就是将高位补0,低位舍去。(右移则是相除)。
  • 数据类型的转换,一般来说低类型数据转换为高类型数据,这是因为数据类型越高,表示的范围也越大,精度也越高,这样在类型转换上不会出现精度丢失。

算法的基本控制结构

  1. 选择结构: if…else… if …else if … switch(int or char or enum)
  2. 循环结构
    while语句:while(表达式) 语句 —— 在循环体中包含有改变循环表达式条件的语句。
    do…while语句:do 语句 while(表达式)——先执行循环体然后在判断while中的表达式。如果循环体中在最开始时为假,那么do…while还是会执行一次。
    for语句:for(初始语句;表达式1;表达式2)
    break出现在switch和循环语句中,使程序从switch或循环中跳出,继续执行逻辑上的下一条语句。
    continue 作用于循环语句中,其作用是结束本次循环,接着开始判断是否执行下一次循环。
void allFactor(){
    int n;
    
    cout<<" Enter the number: ";
    cin>>n;
    cout<<" Number   "<<n<<"    factor  ";

    for(int i =1;i<=n;i++){
        if(n%i==0)
            cout<<i<<" ";
    }
    
    cout<<endl;
}

自定义数据类型(typedef和enum)

typedef 已有类型名 新类型名表;(其作用是为了将较长的类型名重新起一个较短的名称,简化程序)

typedef double Area, Volume;
typedef int Natural;
Area a;
Natural b;

enum 枚举类型名 {变量值列表};

enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};    //枚举元素具有默认值,SUN=0,MON=1,...
enum Weekday {SUN=7, MON=1, TUE, WED, THU, FRI, SAT};   //可以再声明是另行定义枚举元素的值,定义SUN=7,MON=1,之后按顺序加1.
enum GameResult {WIN,LOSE,TIE,CANCEL};
void enum_Example(){
    GameResult result;
    GameResult omit = CANCEL;

    for(int i = WIN;i<=CANCEL;i++){
        result = GameResult(i);
        if(result == omit)
            cout<<" The game was canceled!"<<endl;
        else{
            if(result==TIE)
                cout<<" The game was played! "<<endl;
            if(result==WIN)
                cout<<" The game was won! "<<endl;
            if(result==LOSE){
                 cout<<" The game was lose! "<<endl;
            }
        }
    }

}

2.3 总结

这一章是我们在使用C++语言进行编程之前需要了解的一些方法和基础知识。主要讲的是C语言和C++的优缺点以及不同点,然后描述在利用C++时需要知道的基本数据类型,以及在编写程序时的基本控制结构,包括顺序结构、选择结构和循环结构。最后,学习了我并不太了解的枚举方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值