c++:-0
了解
特征
1、继承
2、多态
打球:打乒乓球、打篮球
3、封装
例:
class Clock {
public: void setTime(int newH, int newM, int newS);
void showTime();
private: int hour, minute, second;
};
4、抽象
举例:抽象实例——钟表
数据抽象:int hour,int minute,int second
代码抽象:setTime(),showTime()
程序开发
程序
- 源程序:用源语言写的,有待翻译的程序;
- 目标程序:源程序通过翻译程序加工以后生成的机器语言程序;
- 可执行程序:连接目标程序以及库中的某些文件,生成的一个可执行文件;例如:Windows系统平台上的.EXE文件。
翻译程序
- 汇编程序:将汇编语言源程序翻译成目标程序;
- 编译程序:将高级语言源程序翻译成目标程序;
- 解释程序:将高级语言源程序翻译成机器指令,边翻译边执行。
程序开发过程:设计,编译,链接,测试,调试
C++是直接编译为本地机器语言的代码。
Java是半编译半解释的语言,目的是跨平台:源程序编译为中间程序,中间程序在Java虚拟机中运行,Java虚拟机再将中间程序再编译为本地机器的执行程序。【Java虚拟机主要作为解释程序】
信息表示
进制表示
进制转换
整数
浮点数
编码
原码-反码-补码
原码
原码是符号-绝对值表示
原码的缺点:
(1)零表示不唯一
[+0]原=000...0
[-0]原=100...0
(2)进行四则运算时符号必须单独处理且运算规则复杂
补码
- 符号位可作为数值参加运算;
- 减法运算可转换为加法运算;
- 0的表示唯一
模数:
n位二进制整数的模数为\(2^n\);
n位二进制小数的模数为2。
补数:
- 一个数减去另一个数(加一个负数),等于第一个数加第二个数的补数,例(时钟指针):8+(-2)=8+10(mod12)=6;
- 一个二进制负数可用其模数与真值做加法(模减去该数的绝对值)求得其补码,例(时钟指针):-2+12=10。
补码计算:
- 借助于“反码”作为中间码;
- 负数的反码与原码有如下关系:
- 符号位不变(仍用1表示),其余各位取反(0变1,1变0),例如:X=-1100110[X]原=11100110[X]反=10011001
- 正数的反码与原码表示相同,正数的补码与原码相同;
- 反码只是求补码时的中间码;
- 负数的补码由该数反码的末位加1求得。
- 对补码再求补即得到原码。
补码的优点:
- 0的表示唯一;
- 符号位可作为数值参加运算;
- 补码运算的结果仍为补码。
浮点数表示
- 计算机中通常采用浮点方式表示小数;
- 实数N用浮点形式可表示为:\(N=M×2^E\),E:2的幂,N:阶码;M:N的尾数。
字符表示
字符在计算机中是通过编码表示的;
例如:
ASCII码是一种常用的西文字符编码:用7位二进制数表示一个字符,最多可以表示\(2^7=128\)个字符;
《GB18030-2005信息技术中文编码字符集》是中国国家标准。
标识符
开始:大小写字母或者下划线
习题
(1)以下属于c++语言的特点是:(多选)
- 支持面向对象程序设计(T)
- 支持泛型程序设计(T)
- 支持面向过程程序设计(T)
(2)以下字符串可以作为标识符的是(多选)
- _(T)
- 123
- C++
- Define(T)
- int
- cout(T):需要带命名空间才会冲突!
基本数据类型
- 整数类型;
- 浮点数类型;
- 字符类型;
- 布尔类型。
整数类型(int)
基本的整数类型:int
按符号分:
- 符号的(signed)
- 无符号的(unsigned)
按照数据范围分:
- 短整数(short)
- 长整数(long)
- 长长整数( long long )
ISO C++标准并没有明确规定每种数据类型的字节数和取值范围,它只是规定它们之间的字节数大小顺序满足:(signed/unsigned)signed char ≤(unsigned) short int ≤(unsigned) int ≤(unsigned) long int ≤ long long int
字符类型(char)
- 容纳单个字符的编码;
- 实质上存储的也是整数。
浮点数类型
- 单精度(float)
- 双精度(double)
- 扩展精度(long double)
字符串类型(string)
- 有字符串常量
- 基本类型中没有字符串变量
- 采用字符数组存储字符串(C风格的字符串)
- 标准C++类库中的String类(C++风格的字符串)
类型范围
常量
- 在程序运行的整个过程中其值始终不可改变的量;
- 直接使用符号(文字)表示的值;
- 例如:12,3.5,'A'都是常量。
整数常量
- 十进制:
若干个0~9的数字,但数字部分不能以0开头,正数前边的正号可以省略。 - 八进制:
前导0+若干个0~7的数字。 - 十六进制:
前导0x+若干个09的数字及AF的字母(大小写均可)。 - 后缀:
后缀L(或l)表示类型至少是long,后缀LL(或ll)表示类型是long long,后缀U(或u)表示unsigned类型。
浮点数常量
- 一般形式:
例如,12.5,-12.5等。 - 指数形式:
例如,0.345E+2,-34.4E-3;
整数部分和小数部分可以省略其一。
- 浮点常量默认为double型,如果后缀F(或f)可以使其成为float型,例如:12.3f。
字符常量
运算符
复合赋值运算符
+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
例:
a += 3 等价于 a = a + 3
x *= y + 8 等价于 x = x * (y + 8)
逗号运算符
- 格式:表达式1,表达式2
- 求解顺序及结果:
先求解表达式1,再求解表达式2
最终结果为表达式2的值 - 例:
a = 3 * 5 , a * 4 最终结果为60
关系运算符
关系表达式其结果类型为 bool,值只能为 true 或false。
例如:a > b,c <= a + b,x + y == 3
逻辑运算符
!(非) &&(与) ||(或)
优先次序: 高 → 低
逻辑运算结果类型:bool,值只能为 true 或false
“&&”
- 两侧表达式都为真,结果为真;
- 有一侧表达式为假,结果为假。
“&&” 的“短路特性”:表达式1 && 表达式2
- 先求解表达式1
- 若表达式1的值为false,则最终结果为false,不再求解表达式2
- 若表达式1的结果为true,则求解表达式2,以表达式2的结果作为最终结果
“||”
- 两侧表达式都为假,结果为假;
- 有一侧表达式为真,结果为真。
“||” 的“短路特性”:表达式1 || 表达式2
- 先求解表达式1
- 若表达式1的值为true,则最终结果为true,不再求解表达式2
- 若表达式1的结果为false,则求解表达式2,以表达式2的结果作为最终结果
条件运算符
表达式1?表达式2:表达式3
表达式1 必须是bool 类型
执行顺序:
- 先求解表达式1,
- 若表达式1的值为true,则求解表达式2,表达式2的值为最终结果
- 若表达式1的值为false,则求解表达式3,表达式3的值为最终结果
- 条件运算符优先级高于赋值运算符,低于逻辑运算符
例:
表达式1是bool类型,表达式2、3的类型可以不同,条件表达式的最终类型为2 和3 中较高的类型。
位运算符
sizeof函数
“类型名”所指定的类型,或“表达式”的结果类型所占的字节数。
按位与
将两个运算量的每一个位进行逻辑与操作
例:计算3 & 5
用途:
- 将某一位置0,其他位不变:
例如:将char型变量a的最低位置0: a = a & 0xfe; ;(0xfe:1111 1110) - 取指定位:
例如:有char c; int a; 取出a的低字节,置于c中:c=a & 0xff; (0xff:1111 1111)
按位或
将两个运算量的每一个位进行逻辑或操作
举例:计算3 | 5
用途:
- 将某些位置1,其他位不变。
例如:将 int 型变量 a 的低字节置 1 :a = a | 0xff;
按位异或
两个操作数进行异或:若对应位相同,则结果该位为 0,若对应位不同,则结果该位为 1
举例:计算071^052
用途:
- 举例:使特定位翻转(与0异或保持原值,与1异或取反)
例如:要使 01111010 低四位翻转:
按位取反
单目运算符,对一个二进制数按位取反。
例:
025:0000000000010101; ~025:1111111111101010
按位移位
- 左移运算(<<)
左移后,低位补0,高位舍弃;
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
- 右移运算(>>)
右移后:低位:舍弃;
右移一位相当于除2,右移n位相当于除以2的n次方。
高位:
- 无符号数:补0
- 有符号数:补“符号位”
类型转换
运算优先级
类型转换
(1)隐式转换
自动转换,基本原则是将低类型数据转换为高类型数据。
(2)显示转换
- 类型说明符(表达式)
- (类型说明符)表达式
- 类型转换操作符<类型说明符>(表达式)
类型转换操作符可以是:
const_cast、dynamic_cast、reinterpret_cast、static_cast
- 例:int(z), (int)z, static_cast(z)
输入输出
- “<<”是预定义的插入符,作用在流类对象cout上便可以实现项标准输出设备输出。
cout << 表达式 << 表达式... - 标准输入是将提取符作用在流类对象cin上。
cin >> 表达式 >> 表达式... - 提取符可以连续写多个,每个后面跟一个表达式,该表达式通常是用于存放输入值的变量。例如:
int a, b;
cin >> a >> b;
常用I/O流操纵符
例:cout << setw(5) << setprecision(3) << 3.1415;
循环结构
do-while
实现数字翻转输出:
#include <iostream>
using namespace std;
int main() {
int n, right_digit, newnum = 0;
cout << "Enter the number: ";
cin >> n;
cout << "The number in reverse order is ";
do {
right_digit = n % 10;
cout << right_digit;
n /= 10; /*相当于n=n/10*/
} while (n != 0);
cout << endl;
return 0;
}
自定义类型
别名
typedef
typedef 已有类型名 新类型名表
例:
typedef double Area, Volume;
typedef int Natural;
Natural i1,i2;
Area a;
Volume v;
using
using 新类型名 = 已有类型名;
例:
using Area = double;
using Volume = double;
枚举
语法形式:
enum 枚举类型名 {变量值列表};
例:enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
默认情况下:
SUN=0,MON=1,TUE=2,......,SAT=6
不限定作用域
- 枚举元素是常量,不能对它们赋值
例如有如下定义
enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
不能写赋值表达式:SUN = 0 - 枚举元素具有默认值,它们依次为: 0,1,2,......。
- 也可以在声明时另行指定枚举元素的值,如:
enum Weekday{SUN=7,MON=1,TUE,WED, THU,FRI,SAT}; - 也可以在声明时另行指定枚举元素的值;
- 枚举值可以进行关系运算。
- 整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。
- 枚举值可以赋给整型变量。
举例
问题:设某次体育比赛的结果有四种可能:胜(WIN)、负(LOSE)、平局(TIE)、比赛取消(CANCEL),编写程序顺序输出这四种情况。
#include <iostream>
using namespace std;
enum GameResult {WIN, LOSE, TIE, CANCEL};
int main() {
GameResult result;
enum GameResult omit = CANCEL;
for (int count = WIN; count <= CANCEL; count++) {
result = GameResult(count);//强制类型转换
if (result == omit)
cout << "The game was cancelled" << endl;
else {
cout << "The game was played ";
if (result == WIN) cout << "and we won!";
if (result == LOSE) cout << "and we lost.";
cout << endl;
}
}
return 0;
}
auto类型
auto:编译器通过初始值自动推断变量的类型
例如:auto val = val1 + val2;
如果val1+val2是int类型,则val是int类型;
如果val1+val2是double类型,则val是double类型。
decltype
decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量
例如:decltype(i) j = 2;//i和j的类型不同
c++:-0的更多相关文章
- 在ie浏览器,360浏览器下,margin:0 auto;不居中的原因
转自 http://blog.sina.com.cn/s/blog_6eef6bf60100nn4m.html margin:0 auto:不居中可能有以下两个的原因 没有设置宽度 看看上面的代码,根 ...
- 使用font-size:0去掉inline-block元素之间的空隙
现代浏览器的最新版都支持inline-block,只有该死的ie6.7不支持inline-block,但ie6.7可以通过 display:inline: zoom:1: 来模拟 下面是inline- ...
- layui,返回的数据不符合规范,正确的成功状态码 (code) 应为:0
在使用layui的数据表格绑定数据的时候,出现的一些问题, "返回的数据不符合规范,正确的成功状态码 (code) 应为:0" 之后在网上也查找的了许多的资料,也去看了官网的文档 ...
- 无法安装Java,以下开关中存在错误:“0”
无法安装Java,以下开关中存在错误:“0”:. 解决方法:以管理员运行
- [世预赛] 中国vs菲律宾,第一场考验,国足力争三连胜,比分预测:3:0, 2:0,4:1
7比0大胜关岛,中国国家男子足球队在冲击2022卡塔尔世界杯的征途上收获两连胜,北京时间10月15日20点,中国男足将奔赴巴科洛德,客场挑战菲律宾男足,本场比赛也是中国男足在本次世预赛四十强赛阶段的第 ...
- app内区域截图利用html2Canvals保存到手机 截屏 (html2Canvas使用版本是:0.5.0-beta3。)
app内区域截图利用html2Canvals保存到手机 app内有时候需要区域内的截图保存dom为图像,我们可以使用html2Canvas将dom转换成base64图像字符串,然后再利用5+api保存 ...
- Why系统:0.1 + 0.2 != 0.3
为了知道更多一点,打算自己来一个why系列. 面试官:同学, 请问 0.1 + 0.2 等于多少 同学:不等于0.3, 因为精度问题 面试官:能更深入的说一下嘛 同学:...... 上面的同学,就是曾 ...
- border:none 和border:0区别差异
border:none与border:0的区别体现为两点:一是理论上的性能差异,二是浏览器兼容性的差异. 性能差异: [border:0;]把border设为“0”像素效果等于border-width ...
- display:none 与 opacity:0
display:none隐藏消失: opacity:0 只是透明:
- margin:0 auto;不居中?
1.没有设置宽度 <div style="margin:0 auto;"></div> 看看上面的代码,根本没有设置DIV的宽度,如何根据宽度自适应呢?新手 ...
随机推荐
- isPrimitive:检测数据是不是原始数据
function isPrimitive(value) { return isStatic(value) || typeof value === 'symbol}
- WIN10 SERVICES -- 部署IIS
一 . 添加角色功能 二. 添加WEB服务器(IIS) 三. 打开TCP ASP.NET 安装 供运行端口
- 20241120 校内模拟赛 T3 题解
题目描述 给定一个数列 \(A\),数列的元素取值范围为 \([1,m]\). 请计算有多少个非空子区间满足以下条件:该区间内每个元素的出现次数都相同(没有出现的元素视为出现 \(0\) 次). 例如 ...
- 孤立森林(IForest)代码实现及与PyOD对比
孤立森林(Isolation Forest)是经典的异常检测算法(论文网址).本文用python对其进行实现,以及与常用的异常检测包PyOD进行效果对比. 简单来说,孤立森林(IForest)中包含若 ...
- MySQL8.0新特性之增强版逻辑备份恢复
前言关于MySQL库表逻辑备份恢复,我们主要有以下几种常用的工具: 1.mysqldump:MySQL原生自带的逻辑备份恢复工具,支持整个实例.单个数据库.单张表等的备份与恢复,对于1-10个G的数据 ...
- linux学习用到的命令
创建快件方式 ln 创建目录的快件方式 sudo ln -s /root/myhack/ /root/Desktop以上指令是创建软链接到桌面. ln -s /mnt/hgfs/VMware_shar ...
- MySQL原理简介—9.MySQL索引原理
大纲 1.磁盘数据页的存储结构 2.没有索引数据库如何搜索数据 3.在表中插入数据时如何进行页分裂 4.如何设计主键索引及如何根据主键索引查询 5.索引的物理存储结构 6.更新数据时自动维护的聚簇索引 ...
- 一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
前言 最近发现DotNetGuide技术社区交流群有不少小伙伴在学习Avalonia,今天大姚给大家分享一款开源.免费.美观的 Avalonia UI 原生控件库:Semi Avalonia. Ava ...
- HASHCTF2024
第一届山东大学HASHCTF部分Misc题解 下面是我在本次比赛出的题目的WriteUp Secret of Keyboard 签到脚本题,有些同学的脚本解出来大小写不正确可能是由于脚本无法识别shi ...
- 前端跨平台调试代理神器Whistle
概述 抓包一直是平时开发中经常要做的,有一款好用的抓包工具可以让开发体验更棒,以前一直用fiddler,fiddler虽然强悍,但是入手有一定难度,而且较笨重,今天介绍另一款抓包工具:Whistle. ...