当前位置: 首页 > news >正文

bool c语言_C++知识点 5:C++ 对 C 语言的扩展

1、 C++ 对全局变量检测增强
int a;
int a = 10;
int main(){
}

C语言语法通过
C++ 报错: int a 重定义

2、函数检测增强
getRectS( w , h )
{
return w * h;
}
void test02()
{
getRectS(10, 10, 10);
}

C语言中:不报错
C++ 报错: C++ 中要严格限定: 函数返回值必须有;函数参数类型;调用传递的参数数量必须一样
****************************************************************************************


3、类型转换加强: C++中要求严格的类型转换
C 语言中: char* p = malloc(64); // OK
C++中不行,必须: char* p = (char*)malloc(64);
****************************************************************************************

4、 struct 增强
1) C++中 结构体里可以放函数,但 C 语言中不行
2)调用时候, C++语言中 ,可以省略 struct 关键字 // 作用相当于 C 语言中给结构体起别名

struct Person
{
int age;
void addAge(){ age++; };
};
void test04()
{
Person p1; // 可以省略关键字 struct
p1.age = 17;
p1.addAge();
cout << "p1 的年龄: " << p1.age << endl; // 结果: p1 的年龄: 18
}****************************************************************************************

5、 bool 类型的扩展
1) C 语言中没有 bool 类型
2) bool 类型的变量只有 2 个值:
真 true 1
假 flase 0 未初始化 默认 = 0

3) bool 变量类型大小 = 1
int main()
{
bool flag = true;
cout << sizeof(bool) << endl; // 1
cout << "flag = " << flag << endl; // flag = 1
}****************************************************************************************

6、三目运算符的增强
一句话:三目运算符的返回值,对于 C 语言,是一个值;对于 C++,是一个变量
---------------------------------------------------------------------------------------------------
C++ 中

void test()
{
int a = 10;
int b = 20;
cout << "ret = " << ((a > b) ? a : b ) << endl; // 结果 ret = 20// 过程: // (a > b) ? a : b 结果 b = 20 // ret = b // ret = 20
(a > b ? a : b) = 100; // 不报错( b = 20) = 100 C++语言中 返回的是变量
cout << "a = " << a << endl; // 结果 a = 10
cout << "b = " << b << endl; // 结果 b = 100
}---------------------------------------------------------------------------------------------------C 语言中
void test()
{
int a = 10;
int b = 20;
printf("ret = %d ", a > b ? a : b);// ( a > b ? a : b ) = 100; // 报错:这句话等价于 20 = 100 C 语言中 三目运算符 返回的是 值
*(a > b ? &a : &b) = 100; // 模仿 C++中的 三目运算// 解析: (a > b ? &a : &b) 结果: &b *(&b) = 100 即 b = 100
printf("a = %d", a); // a = 10
printf("b = %d", b); // b = 100
}****************************************************************************************
7、 const 修饰的 局部常量 详见 “知识点 6”

7fe5b904eb096a6dcd994a979c58cf51.png

相关文章:

  • 如何把密度函数化为标准正态二维分布_概率论复习(4): 正态分布
  • 网络拓扑图标_快速创建 HTML5 Canvas 电信网络拓扑图
  • python网页爬虫菜鸟教程_python菜鸟 想做一个简单的爬虫 求教程
  • python编程控制机器人_python人工智能机器人工具书籍: Learn Robotics Programming 2018
  • python numpy库作用_Python NumPy库学习
  • python中pow_Python中float的内置pow()和math.pow()之间的区别?
  • python3.6标准库pdf_python3.6下载|python3.6官方版-520下载站
  • python常用单词有多少_在python中,如何找出一个单词中有多少个单独的字母?
  • wireshark抓取dns_利用Scapy打造简单的DNS监测脚本
  • flash动画在新媒体中的应用_2020年宁德市新媒体新技术创新应用课堂教学研讨活动(高中组)在宁德市高级中学举行(二)...
  • python语言流程控制语句的格式_慢步学python,编程基础知识,流程控制语句if
  • 输变电设备物联网传感器数据通信规约_物联网大潮来袭,无线通讯模块如何连接未来?...
  • python怎么爬取app数据_python高级教程 爬虫抓取App数据
  • python中loop函数_为何GAMLOOP中函数输出的Python Scopage不计算?
  • springboot 源码_SpringBoot是如何实现自动配置的? SpringBoot源码(四)
  • 《深入 React 技术栈》
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • C# 免费离线人脸识别 2.0 Demo
  • C++类中的特殊成员函数
  • export和import的用法总结
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Netty 4.1 源代码学习:线程模型
  • nginx 配置多 域名 + 多 https
  • React的组件模式
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue UI框架库开发介绍
  • 从tcpdump抓包看TCP/IP协议
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 三栏布局总结
  • 使用Swoole加速Laravel(正式环境中)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 微信公众号开发小记——5.python微信红包
  • 正则表达式
  • Mac 上flink的安装与启动
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​决定德拉瓦州地区版图的关键历史事件
  • # Maven错误Error executing Maven
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)计算机毕业设计大学生兼职系统
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (一) springboot详细介绍
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net refrector
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net操作Excel出错解决
  • .NET大文件上传知识整理
  • .NET关于 跳过SSL中遇到的问题
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .py文件应该怎样打开?
  • ??在JSP中,java和JavaScript如何交互?