计算机的最基本功能是数据处理

l  C++支持的基本数据类型:

n  整数、实数、字符、布尔数据

l  C++支持的基本运算

n  算术运算、关系运算、逻辑运算、位运算、逗号运算、条件运算

程序要能够输入数据、输出数据

l  C++中的数据输入/输出可以调用预定义的功能模块实现

程序的执行流程

l  顺序的,因此程序要能够对执行流程进行选择(选择、开关语句);

l  反复用同一算法依次处理大批量数据(循环语句)。

枚举类型

l  通过列出所有可取值来定义一种新类型。

C++的特点和程序实例

C++的产生和发展

l  从C语言发展演变而来,最初被称为"带类的C";

l  1983年正式取名为C++;

l  1998年11月被国际标准化组织(ISO)批准为国际标准;

l  2003年10月15日发布第2版C++标准ISO/IEC 14882:2003;

l  2011年8月12日ISO公布了第三版C++标准C++11,包含核心语言的新机能、扩展C++标准程序库。

l  2014年8月18日ISO公布了C++14,其正式名称为"International Standard ISO/IEC 14882:2014(E) Programming Language C++"。

l  C++14作为C++11的一个小扩展,主要提供漏洞修复和小的改进。

C++的特点

l  兼容C,支持面向过程的程序设计;

l  支持面向对象的方法;

l  支持泛型程序设计方法。

命名空间

避免命名冲突

std是C++标准库的命名空间( namespace)名

using namespace std表示打开std命名空间

例2-1

//2_1.cpp

#include <iostream>

using namespace std;

int main() {

cout << "Hello!" << endl;

cout << "Welcome to c++!" << endl;

return 0;

}

运行结果:

Hello!

Welcome to c++!

C++字符集和词法记号

字符集

l  大小写的英文字母:A~Z,a~z

l  数字字符:0~9

l  特殊字符:

!              #              %             ^              &             *              _              +              =              -               ~              <              >              /              \                ‘               “              ;               .               ,               :               ?              (               )               [               ]               {               }   |

词法记号

l  关键字           C++预定义的单词

l  标识符           程序员声明的单词,它命名程序正文中的一些实体

l  文字   在程序中直接使用符号表示的数据

l  分隔符 ()   {}   ,    :    ;  
                      用于分隔各个词法记号或程序正文

l  运算符(操作符)    用于实现各种运算的符号

l  空白符           空格、制表符(TAB键产生的字符)、垂直制表符、换行符、回车符和注释的总称

标识符的构成规则

l  以大写字母、小写字母或下划线(_)开始。

l  可以由以大写字母、小写字母、下划线(_)或数字0~9组成。

l  大写字母和小写字母代表不同的标识符。

l  不能是C++关键字或操作符。

基本数据类型、常量、变量

C++能够处理的基本数据类型

l  整数类型;

l  浮点数类型;

l  字符类型;

l  布尔类型。

程序中的数据

l  常量

n  在源程序中直接写明的数据;

n  其值在整个程序运行期间不可改变。

l  变量

n  在程序运行过程中允许改变的数据。

整数类型

l  基本的整数类型:int

l  按符号分

n  符号的(signed)

n  无符号的(unsigned)

l  按照数据范围分

n  短整数(short)

n  长整数(long)

n  长长整数( long long )

l  ISO C++标准并没有明确规定每种数据类型的字节数和取值范围,它只是规定它们之间的字节数大小顺序满足:

(signed/unsigned)signed char ≤ (unsigned) short int ≤ (unsigned) int ≤ (unsigned) long int ≤ long long int

字符类型(char)

l  容纳单个字符的编码;

l  实质上存储的也是整数。

浮点数类型

l  单精度(float)

l  双精度(double)

l  扩展精度(long  double)

字符串类型(详见第6章)

l  有字符串常量

l  基本类型中没有字符串变量

l  采用字符数组存储字符串(C风格的字符串)

l  标准C++类库中的String类(C++风格的字符串)

布尔类型(bool)

l  只有两个值:true(真) 、false(假)

l  常用来表示关系比较、相等比较或逻辑运算的结果

各基本类型的取值范围

常量

l  在程序运行的整个过程中其值始终不可改变的量;

l  直接使用符号(文字)表示的值;

l  例如:12,3.5,'A'都是常量。

整数常量

l  以文字形式出现的整数;

l  十进制

n  若干个0~9的数字,但数字部分不能以0开头,正数前边的正号可以省略。

l  八进制

n  前导0+若干个0~7的数字。

l  十六进制

n  前导0x+若干个0~9的数字及A~F的字母(大小写均可)。

l  后缀

n  后缀L(或l)表示类型至少是long,后缀LL(或ll)表示类型是long long,后缀U(或u)表示unsigned类型。

浮点数常量

l  以文字形式出现的实数;

l  一般形式:

n  例如,12.5,-12.5等。

l  指数形式:

n  例如,0.345E+2,-34.4E-3;

n  整数部分和小数部分可以省略其一。

l  浮点常量默认为double型,如果后缀F(或f)可以使其成为float型,例如:12.3f。

字符常量

l  单引号括起来的一个字符,如:'a'、'D'、'?'、'$';

l  C++转义字符列表(用于在程序中表示不可显示字符)

C风格字符串常量

l  一对双引号括起来的字符序列;

l  在内存中按串中字符的排列次序顺序存放,每个字符占一个字节;

l  在末尾添加 ‘\0’ 作为结尾标记。

例:

通过添加前缀可以改变字符常量或者字符串常量的类型,前缀及其含义如下表所示:

变量:在程序的运行过程中,其值可变的量

l  变量定义

n  数据类型    变量名1, 变量名2, ..., 变量名n;

l  初始化

n  C++语言中提供了多种初始化方式;

n  例如:

int a = 0;

int a(0);

int a = {0};

int a{0};

其中使用大括号的初始化方式称为列表初始化,列表初始化时不允许信息的丢失。例如用double值初始化int变量,就会造成数据丢失。

符号常量

l  常量定义语句的形式为:

n  const  数据类型说明符  常量名=常量值;

或:

n  数据类型说明符  const  常量名=常量值;

l  例如,可以定义一个代表圆周率的符号常量:

n  const float PI = 3.1415926;

l  符号常量在定义时一定要初始化,在程序中间不能改变其值。

算术运算与赋值运算

算术运算

l  基本算术运算符

n  +  -  *  /(若整数相除,结果取整)

n  %(取余,操作数为整数)

l  优先级与结合性

n  先乘除,后加减,同级自左至右

l  ++, --(自增、自减)

n  例:i++;    --j;

赋值运算

l  将值赋给变量

l  赋值运算符“=”

l  赋值表达式:

n  用赋值运算符连接的表达式

n  例:

n=5

n = n + 5

n  表达式的值
赋值运算符左边对象被赋值后的值

n  表达式的类型
赋值运算符左边对象的类型

l  复合的赋值运算符

n  +=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=

n  例
a += 3 等价于 a = a + 3
x *= y + 8 等价于 x = x * (y + 8)

逗号运算、关系运算、逻辑运算和条件运算

逗号运算和逗号表达式

l  格式

表达式1,表达式2

l  求解顺序及结果

n  先求解表达式1,再求解表达式2

n  最终结果为表达式2的值

l  例

a = 3 * 5 , a * 4   最终结果为60

关系运算与关系表达式

l  关系运算是比较简单的一种逻辑运算,优先次序为:

l  关系表达式是一种最简单的逻辑表达式

n  其结果类型为 bool,值只能为 true 或 false。

例如:a > b,c <= a + b,x + y == 3

逻辑运算与逻辑表达式

l  逻辑运算符

!(非)      &&(与)        ||(或)

优先次序:   高         →            低

l  逻辑运算结果类型:bool,值只能为 true 或 false

l  逻辑表达式

例如:(a > b) && (x > y)

l  “&&”的运算规则

n   两侧表达式都为真,结果为真;

n  有一侧表达式为假,结果为假。

l  “&&” 的“短路特性”

表达式1 && 表达式2

n  先求解表达式1

n  若表达式1的值为false,则最终结果为false,不再求解表达式2

若表达式1的结果为true,则求解表达式2,以表达式2的结果作为最终结果

l  “||”的运算规则

n  两侧表达式都为假,结果为假;

n  有一侧表达式为真,结果为真。

l  “||” 的“短路特性”

表达式1 || 表达式2

n  先求解表达式1

n  若表达式1的值为true,则最终结果为true,不再求解表达式2

若表达式1的结果为false,则求解表达式2,以表达式2的结果作为最终结果

条件运算符与条件表达式

l  一般形式

n   表达式1?表达式2:表达式3

表达式1 必须是 bool 类型

l  执行顺序

n  先求解表达式1,

n  若表达式1的值为true,则求解表达式2,表达式2的值为最终结果

若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

l  条件运算符优先级高于赋值运算符,低于逻辑运算符

n  例

表达式1是bool类型,表达式2、3的类型可以不同,条件表达式的最终类型为 2 和 3 中较高的类型。

Sizeof运算、位运算

sizeof运算

l  语法形式
sizeof (类型名)
或 sizeof 表达式

l  结果值:
“类型名”所指定的类型,或“表达式”的结果类型所占的字节数。

l  例:

sizeof(short)

sizeof  x

位运算——按位与(&)

l  运算规则

将两个运算量的每一个位进行逻辑与操作

l  举例:计算 3 & 5

l  用途:

n  将某一位置0,其他位不变。
例如:将char型变量a的最低位置0: a = a & 0xfe; ;(0xfe:1111 1110)

n  取指定位。
例如:有char c; int a; 取出a的低字节,置于c中:c=a & 0xff; (0xff:1111 1111)

位运算——按位或(|)

l  运算规则

n  将两个运算量的每一个位进行逻辑或操作

l  举例:计算 3 | 5

l  用途:

n  将某些位置1,其他位不变。
例如:将 int 型变量 a 的低字节置 1 :
         a = a | 0xff;

位运算——按位异或(^)

l  运算规则

n  两个操作数进行异或:
若对应位相同,则结果该位为 0,
若对应位不同,则结果该位为 1,

l  举例:计算 071^052

l  用途举例:使特定位翻转(与0异或保持原值,与1异或取反)

例如:要使 01111010 低四位翻转:

位运算——取反(~)

l  运算规则

n  单目运算符,对一个二进制数按位取反。

l  例:

025:0000000000010101

~025:1111111111101010

位运算——移位(<<、>>)

n  左移运算(<<)

左移后,低位补0,高位舍弃。

n  右移运算(>>)

右移后:

低位:舍弃

高位:

无符号数:补0

有符号数:补“符号位”

运算优先级、类型转换

运算符优先级

优先级

运算符

结合性

1

[ ]  ( )  .  –>    后置 ++   后置 ––

左→右

2

前置 ++   前置 ––   sizeof   &   *   +(正号)  –(负号) ~  !

右→左

3

(强制转换类型)

右→左

4

.*   ->*

左→右

5

*  /  %

左→右

6

+  –

左→右

7

<< >>

左→右

8

< > <=  >=

左→右

9

==  !=

左→右

10

&

左→右

11

^

左→右

12

|

左→右

13

&&

左→右

14

||

左→右

15

? :

右→左

16

=  *=  /=  %= +=  –=  <<=  >>=&=  ^=  |=

右→左

17

,

左→右

混合运算时数据类型的转换

l  一些二元运算符(算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符)要求两个操作数的类型一致。

l  在算术运算和关系运算中如果参与运算的操作数类型不一致,编译系统会自动对数据进行转换(即隐含转换),基本原则是将低类型数据转换为高类型数据。

条件

转换

有一个操作数是long double型。

将另一个操作数转换为long double型。

前述条件不满足,并且有一个操作数是double型。

将另一个操作数转换为double型。

前述条件不满足,并且有一个操作数是float型。

将另一个操作数转换为float型。

前述条件不满足(两个操作数都不是浮点数)。

有一个操作数是unsigned long long型。

将另一个操作数转换为unsigned long long型。

有一个操作数是long long型,另一个操作数是unsigned long型

两个操作数都转换为unsigned long long型。

前述条件不满足,并且有一个操作数是unsigned long型。

将另一个操作数转换为unsigned long型。

前述条件不满足,并且有一个操作数是long型,另一个操作数是unsigned int型。

将两个操作数都转换为unsigned long型。

前述条件不满足,并且有一个操作数是long型。

将另一个操作数转换为long型。

前述条件不满足,并且有一个操作数是unsigned int型。

将另一个操作数转换为unsigned int型。

前述条件都不满足

将两个操作数都转换为int型。

l  将一个非布尔类型的算术值赋给布尔类型时,算术值为0则结果为false,否则结果为true。

l  将一个布尔值赋给非布尔类型时,布尔值为false则结果为0,布尔值为true则结果为1

l  将一个浮点数赋给整数类型时,结果值将只保留浮点数中的整数部分,小数部分将丢失。

l  将一个整数值赋给浮点类型时,小数部分记为0。如果整数所占的空间超过了浮点类型的容量,精度可能有损失。

混合运算时数据类型的转换——显式转换

l  显式类型转换的作用是将表达式的结果类型转换为类型说明符所指定的类型。

l  语法形式

n  类型说明符(表达式)

n  (类型说明符)表达式

n  类型转换操作符<类型说明符>(表达式)

n  类型转换操作符可以是:
const_cast、dynamic_cast、reinterpret_cast、static_cast

l  例:int(z), (int)z, static_cast<int>(z)
三种完全等价

C++简单程序设计的更多相关文章

  1. 第2章c++简单程序设计

    第2章c++简单程序设计 知识梳理 以下是我遗忘以及认为重要的知识整理: 1.标识符的构成规则: 以大写字母.小写字母或下划线 _ 开始 由大写字母.小写字母.下划线 _ 或数字(0~9)组成 大写字 ...

  2. 实验1:C++简单程序设计(1)

    实验目的 1. 掌握c++中类c部分的编程知识: 数据类型,常量,变量,运算符,表达式,分支结构,循环结构 2. 掌握C++中数据输入和输出的基本方法 3. 熟练使用c++程序开发环境,掌握c++程序 ...

  3. c++简单程序设计 实验一

    实验内容: 2-28 实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入.A表示增加,D表示删除, S表示排序 ...

  4. 实验一:c++简单程序设计(1)

    实验结论 编程练习2-28 switch版源码: #include <iostream> using namespace std; int main(void) { cout <&l ...

  5. 实验一:C++简单程序设计

    [实验一] #2-28 实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入.A表示增加,D表示删除,S表示排序 ...

  6. 实验1:c++简单程序设计(1)

    //文中有格式错误请无视 //这个编辑器一言难尽 实验目的 1. 掌握c++中类c部分的编程知识: 数据类型,常量,变量,运算符,表达式,分支结构,循环结构 2. 掌握C++中数据输入和输出的基本方法 ...

  7. C++——简单程序设计

    1.一个简单的程序 #include <iostream> //iostream是头文件,用来说明要使用的对象的相关信息. using namespace std; //使用命名空间,解决 ...

  8. C/C++基础知识总结——C++简单程序设计

    1. sizeof 1.1 sizeof(类型名) 1.2 sizeof 表达式 1.3 返回所占字节大小 2. I/O流的输出格式 2.1 常用I/O流库操纵符 dec         十进制 he ...

  9. 实验一 C运行环境与最简单程序设计

    #include<stdio.h> int main(){ int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n&quo ...

随机推荐

  1. 前端-HTML-web服务本质-HTTP协议-请求-标签-01(待完善)

    目录 前端 什么是前端 什么是后端 学习流程 前端三剑客的形容 web服务的本质 测试--浏览器作为客户端向服务器发起请求 浏览器输入网址回车发生了几件事 ***** HTTP协议(超文本传输协议) ...

  2. 基础知识:CSRF漏洞

    CSRF漏洞概述 CSRF漏洞是跨站请求伪造攻击,能够对攻击用户的增.删.改,不能攻击查.为什么呢?根据其原理,攻击者是发一个链接给用户,用户点击这个链接而执行危险的操作,信息并不会返回到攻击者的电脑 ...

  3. docker java环境 直接做成镜像 跑自己的java包

    yum install docker #基于阿里源 可以直接下载 systemctl restart docker ifconfig  #出现 docker0  说明环境部署成功 docker ver ...

  4. MYSQL之查询篇

    2. 数据库操作 数据库在创建以后最常见的操作便是查询 2.1 查询 为了便于学习和理解,我们预先准备了两个表分别是stduents表和classes表两个表的内容和结构如下所示 students表的 ...

  5. TestNG(七)组测试

    package com.course.testng.groups; import org.testng.annotations.AfterGroups; import org.testng.annot ...

  6. 是的,是你的BFC - CSS中常用

    是的,是你的BFC - CSS中常用     是的,是你的BFC - CSS中常用 CFC 全称:(Block Formatting Contexts)含义是块级格式化上下文),就是一个块级元素的渲染 ...

  7. [Advanced Python] 14 - "Generator": calculating prime

    高性能编程 几个核心问题 • 生成器是怎样节约内存的?• 使用生成器的最佳时机是什么?• 我如何使用 itertools 来创建复杂的生成器工作流?• 延迟估值何时有益,何时无益? From: htt ...

  8. Postman工具使用-接口测试(实战一)

    写在前面,本文首发[简书]https://www.jianshu.com/p/c188624c3580 作为一名测试人员,要去思考一下,如何能按需完成任务,又能轻松解决问题,这就很重要了!!! 凡事皆 ...

  9. IT修养-基础篇

    1.科学基础 成为开发人员的过程不尽相同,有的是科班出身,有的是兴趣爱好,还有的是专业机构的培训,在这个过程中,可能全面或者零散甚至没有学习过计算机基础学科,但无论是哪一种,想要成为更高层次的开发人员 ...

  10. 品Spring:详细解说bean后处理器

    一个小小的里程碑 首先感谢能看到本文的朋友,感谢你的一路陪伴. 如果每篇都认真看的话,会发现本系列以bean定义作为切入点,先是详细解说了什么是bean定义,接着又强调了bean定义为什么如此重要. ...