IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 11.03 -> 正文阅读

[C++知识库]11.03

11.03

任务目标 // 进度:

工作结果:

学习笔记:

>>=   //右移后赋值
<<=   //左移后赋值
&=    //按位与后赋值
^=    //按位异或后赋值
|=    //按位或后赋值

<<    //左移
|     //按位或(y)
int_inp(unsigned short port)           //指定输入端口,读入
int_outp(unsiged short port,int databyte)           //指定输出端口号,写出

int strcmp(const char *str1,const char *str2)       //字符串比较
	如果返回值小于0,则表示str1小于str2.
	如果返回值大于0,则表示str1大于str2.
	如果返回值等于0,则表示str1等于str2.

atoi(const char *str)          //字符串转为整型
C++ 
->		类成员访问运算符 

int		整型
int*	指向整型的指针
int**	指向整型指针的指针

printf的格式控制的完整格式:
% - 0 m.n l或h 格式字符
下面对组成格式说明的各项加以说明:
①%:表示格式说明的起始符号,不可缺少。
②-:有-表示左对齐输出,如省略表示右对齐输出。
③0:有0表示指定空位填0,如省略表示指定空位不填。
④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

%d 整型输出,%ld 长整型输出,
%o 以八进制数形式输出整数,
%x 以十六进制数形式输出整数,
%u 以十进制数输出unsigned型数据(无符号数)。
%c 用来输出一个字符,
%s 用来输出一个字符串,
%f 用来输出实数,以小数形式输出,
%e 以指数形式输出实数,
%g 根据大小自动选f格式或e格式,且不输出无意义的零。

%2x   //2为输出宽度,不足补空
%02x  //2为输出宽度,不足补0
%-2x  //2为输出宽度,不足后面补0
%.2x  //2为输出宽度,不足补0
%2.2x //2为输出宽度,2为输出精度

C++(预处理,counst, sizeof)

1.预处理

主要作用就是: 把通过预处理的内建功能对一个资源进行等价替换。

最常见的预处理有: 文件包含,条件编译、布局控制和宏替换4种。
文件包含: #include 是一种最为常见的预处理,主要是做为文件的引用组合源程序正文。
条件编译: #if,#ifndef,#ifdef,#endif,#undef等也是比较常见的预处理,主要是进行编译时进行有选择的挑选,注释掉一些指定的代码,以达到版本控制、防止对文件重复包含的功能。
布局控制: #progma,这也是我们应用预处理的一个重要方面,主要功能是为编译程序提供非常规的控制流信息。
宏替换: #define,这是最常见的用法,它可以定义符号常量、函数功能、重新命名、字符串的拼接等各种功能。

 (1)简单的宏定义
#define <宏名>  <字符串>
例: #define PI 3.1415926

(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define A(x) x

常见的预处理指令:
#define 宏定义
#undef 取消宏
#include 文本包含
#ifdef 如果宏被定义就进行编译
#ifndef 如果宏未被定义就进行编译
#endif 结束编译块的控制
#if 表达式非零就对代码进行编译
#else 作为其他预处理的剩余选项进行编译
#elif 这是一种#else和#if的组合选项
#line 改变当前的行数和文件名称
#error 输出一个错误信息
#pragma 为编译程序提供非常规的控制流信息

2.const

Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。

Const主要有几点优势:

保护功能:便于进行类型检查;可以保护被修饰的东西;为函数重载提供了一个参考

时空效率:相比宏常量的反复分配内存空间,const常量只分配一次内存空间;编译器将它们保存在符号表中,成为编译常量,没有了存储与读取的操作。

指针使用CONST

(1)指针本身是常量不可变

 (char*) const pContent; 

 const (char*) pContent; 

(2)指针所指向的内容是常量不可变

 const (char) *pContent; 

 (char) const *pContent; 

(3)两者都不可变

  const char* const pContent; 

(4)还有其中区别方法,沿着*号划一条线:

如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;(const在左—>内容常量)

如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。(const在右—>指针常量)

3.sizeof

sizeof不是函数,更像一个特殊的宏,它是在编译阶段求值的。

cout<<sizeof(int)<<endl; // 32位机上int长度为4
cout<<sizeof(1==2)<<endl; // == 操作符返回bool类型,相当于 cout<<sizeof(bool)<<endl;
在编译阶段已经被翻译为:
cout<<4<<endl;
cout<<1<<endl;
这里有个陷阱,看下面的程序:

int a = 0;
cout<<sizeof(a=3)<<endl;
cout<<a<<endl;
  输出为什么是4,0而不是期望中的4,3???就在于sizeof在编译阶段处理的特性。由于sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译,而是被替换成类型。=操作符返回左操作数的类型,所以a=3相当于int,而代码也被替换为:
int a = 0;
cout<<4<<endl;
cout<<a<<endl;
sizeof有两种用法:

(1)sizeof(object)

也就是对对象使用sizeof,也可以写成sizeof object 的形式。

(2)sizeof(typename)

也就是对类型使用sizeof,注意这种情况下写成sizeof typename是非法的。

任何时候,加括号总是对的。

C语言句柄 handle

句柄就是一个指向指针的指针,充当一种索引的作用


C语言运算符优先级和结合性一览表

预处理、counst与sizeof

心情感悟:

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:24:34  更:2021-11-30 15:25:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:47:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码