C/C++冷门知识点你知道多少呢?

在学习C语言的过程中,我们都自己总结了一些重要的知识点,但是有些不常用的冷门知识点可能就被我们选择性忘记了,你要不要来回一下呢?

1:int跟signed int是一回事,short、long亦然,但char不是。

char、signed char、unsigned char在逻辑上是三种类型,比较直观的体现就是在C++的重载中,你可以定义参数类型分别为它们的三个同名函数。但实现上的类型只有两种,char可能是signed也可能是unsigned的,看编译器实现,现在很多编译器默认是signed,但可以通过选项配置或参数指定为unsigned。

2:你是否已经习惯了“\xHH”这种两个H的写法的16进制换码序列?

但实际上C规定H可以任意多的。

例如:

cout << strlen("\x0012") << endl;

不过如果后面数字太大,是有可能出现溢出的情况,不同编译器处理方式不同,gcc会报错,vc是截取末尾4字节。

可以试试:

cout << "\x1234567890000000000000000000041" << endl;

那如果我想要\x00、1、2这仨字符组成的字符串字面量呢?可以这样写:"\x00""12",多个字面量连着写,会帮你连起来。

3:字符串!

很多语言都支持用反斜杠放在行尾来折行,C++也可以,不过这种代码:

cout << "hello \\
tony" << endl;

有人可能会认为编译失败,因为行尾的反斜杠被前面一个转义了,但实际上一些编译器(比如gcc)并不会到词法分析阶段来搞这个事情,采用了非常粗暴的方式:直接读入源文件然后将里面的"\\\n"替换为空串,然后再开始编译,所以上面的代码其实等于:

cout << "hello \tony" << endl;

第一个反斜杠跟第二行的t连起来,就是tab符了。

4:还是字符串!

C语言以前有三字符换码序列,比如??=表示#等,不过现在很多编译器已经不想支持这种东东了,比如新的gcc会给出个warning,新标准好像也不打算支持了,据说是因为IBM的字符集和老的一些键盘没有#之类的字符,很多老代码是这种形式写的,这个特性的去留问题后面还引起争论,有大佬直接说你们换个新键盘就好啦。

5:C语言的sizeof是一个关键字!!!

sizeof是前缀单目运算符,而不是函数。

这意味着你可以直接写:

cout << sizeof 1 << endl;

然后,强制类型转换运算、指针解引用运算也是前缀单目运算符,而我们知道前缀单目运算符是右结合的,那么这个式子:

sizeof(int)*p
应该解释为:对指针p解引用,然后强制转换为int类型,然后取sizeof咯?哈哈哈

虽然逻辑严谨,但其实不是的,因为还有特殊规定:sizeof后面如果是一个强制类型转换的表达式,则必须加括号,所以不用担心,上面的代码是int的大小乘以p

最好还是给所有sizeof加上括号吧。。。

6:大家是不是都习惯用stdint.h中的int32_t这些类型了,很多资料也推荐用,但这些类型其实是optional的,就是说可能是不提供或缺失,例如ILP64模型下,就没有32位的整型,不过大部分平台还是有的!!!

关注它,

你就可以得到

很多你想要的C/C++

开发工具及学习视频资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

判断人物眼型matlab,怎么判断眼型和脸型?

原标题&#xff1a;怎么判断眼型和脸型&#xff1f;为了判断脸部的形状&#xff0c;建议从面部类型诊断的长度和比例来衡量。我们只测量2个地方的长度和宽度。长度是从眉毛位置到嘴巴的长度&#xff0c;宽度是以嘴巴位置为中心到两个脸颊的宽度。脸型大致分为5种类型脸型大致分…

maven 打包编译_您是否真的想加快Maven的编译/打包速度? 那么takari生命周期插件就是答案。...

maven 打包编译像你们中的许多人一样&#xff0c;我正在使用多模块Maven项目 。 与现有的许多系统相比&#xff0c;它不是一个巨大的系统&#xff0c;它具有15个模块&#xff0c;3种不同的耳朵部署&#xff0c;带有属性文件的大量参数化以及大约10万行Java代码。 在开发高峰期&…

C/C++制作人机猜拳小游戏

C语言学完了之后总是感觉做不出什么有意思的东西&#xff0c;今天我们就来做一个好玩的小游戏试试。#include<stdio.h> #include<time.h> #include<conio.h> #include <windows.h>void win(int a, int b); void wait(); void softgame(); void lefttim…

php实现防止sql注入的通用方法,PHP实现防止sql注入的通用方法

function inject_check($sql_str) {return eregi(select|insert|and|or|update|delete|\|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile, $sql_str);}function verify_id($idnull) {if(!$id) {exit(没有提交参数&#xff01;);} elseif(inject_check($id)) {exit(提交的参…

r 数据框选子集_在带有组合框的值列表的下拉列表中显示显示属性的子集

r 数据框选子集组合框值列表&#xff08;inputComboboxListOfValues&#xff09;应该是使用LOV的非常流行的ADF Faces组件。 坦白说&#xff0c;这是我最喜欢的值列表方法。 在这篇简短的文章中&#xff0c;我将重点介绍ADF开发人员经常忽略的一项功能。 如果默认情况下定义了L…

学php要懂js吗,js要怎么学

有朋友说想要一个学习javascript&#xff0c;但是不知道如何去学习。本篇文章中小编总结了JavaScript重要知识点以及学习方法&#xff0c;有点长&#xff0c;但是很好用&#xff0c;希望对你有所帮助。this&#xff1a;可以开个坑好好研究研究七、了解nodenode现在可以说是前端…

1024到了,默默给自己点个赞!

只有程序员才能看懂的搞笑图片写了一大堆SQL语句&#xff0c;自己都不敢相信居然运行成功了找bug给客户演示&#xff0c;我的bug没被发现正则表达式返回预期效果正则表达式没有返回预期效果上线两天了&#xff0c;客户突然要改需求&#xff0c;我去年买了个表一口气写完代码&am…

input发送a.jax_Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权...

input发送a.jax在使用已可用的HTTP协议实施Web服务时&#xff0c;REST带来了很多便利。 通过仅通过指定的URL触发GET&#xff0c;POST和其他HTTP方法&#xff0c;您将确保通过REST服务的响应来完成某些工作。 但是&#xff0c;无论REST给开发人员带来了什么便利&#xff0c;安全…

oracle regr,oracle 分析函数

一、Oracle分析函数入门分析函数是什么&#xff1f;分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数&#xff0c;它可以在数据中进行分组然后计算基于组的某种统计值&#xff0c;并且每一组的每一行都可以返回一个统计值。分析函数和聚合函数的不同之处是什么&a…

C语言的main函数,究竟有几种写法?

从学习C语言开始就一直写个一个函数&#xff0c;那么你知道它的标准写法什么什么样吗&#xff1f;main函数&#xff0c;又称主函数&#xff0c;是程序执行的起点&#xff0c;我们平时写的main函数是什么样呢&#xff1f;所以说&#xff0c;其他的写法并不符合标准&#xff0c;有…

apache mesos_在Twitter上使用Apache Mesos和Apache Aurora进行资源调度和任务启动

apache mesos播客的第23集是与Bill Farner的谈话 Bill解释了Twitter如何使用Apache Mesos和Apache Aurora在硬件上获得更多收益&#xff0c;并通过在整个基础架构中利用细粒度的资源调度来节省工程时间&#xff08;开发和运营&#xff09;。 Bill谈到了他在Borg上与Google一起…

oracle大于当前月,oracle 现阶段年 当前月 当前周 当前日

当前位置:我的异常网 数据库 oracle 现阶段年 当前月 当前周 当前日oracle 现阶段年 当前月 当前周 当前日www.myexceptions.net 网友分享于&#xff1a;2013-08-16 浏览&#xff1a;296次oracle 当前年 当前月 当前周 当前日Oracle 当前月 当前周 当前年 2010-12-15 15:54…

C语言函数库:动态库和静态库优缺点比较

函数的重要性我们在编写一个C语言程序的时候&#xff0c;经常会遇到好多重复或常用的部分&#xff0c;如果每次都重新编写固然是可以的&#xff0c;不过那样会大大降低工作效率&#xff0c;并且影响代码的可读性&#xff0c;更不利于后期的代码维护。我们可以把他们制作成相应的…

mysql重置增量_摆脱困境:在每种测试方法之前重置自动增量列

mysql重置增量当我们为将信息保存到数据库的功能编写集成测试时&#xff0c;我们必须验证是否将正确的信息保存到数据库。 如果我们的应用程序使用Spring Framework&#xff0c;则可以为此目的使用Spring Test DbUnit和DbUnit 。 但是&#xff0c;很难验证是否在主键列中插入…

oracle itpub论坛,Oracle Service

本帖最后由 sunyunyi 于 2018-11-10 10:33 编辑目前就职海天起点&#xff0c;服务于电力行业&#xff0c;致力于帮助客户解决生产过程中出现的问题&#xff0c;提高生产效率, 爱好书法&#xff0c;周易&#xff01;愿结交志同道合之士&#xff01;共同进步&#xff01; 微信号&…

Linux C语言结构体

前面学习了c语言的基本语法特性&#xff0c;本节进行更深入的学习。预处理程序。 编译指令: 预处理, 宏定义&#xff0c;建立自己的数据类型&#xff1a;结构体&#xff0c;联合体&#xff0c;动态数据结构c语言表达式工具 逻辑运算符&#xff1a; & | ^ ~ << >&g…

ejb构建_如何使用单例EJB,Ehcache和MBean构建和清除参考数据缓存

ejb构建在本文中&#xff0c;我将介绍如何使用单例EJB和Ehcache在Java EE中构建简单的参考数据缓存。 高速缓存将在给定的时间段后重置自身&#xff0c;并且可以通过调用REST端点或MBean方法“手动”清除。 这篇文章实际上是建立在以前的文章中如何建立和清除与单EJB和MBean的一…

oracle中enqueue,ORACLE: Enqueue 烂笔头

Oracle 的enqueue 包含以下模式&#xff1a;模式代码解释1Null mode2Sub-Share3Sub-Exclusive4Share5Share/Sub-Exclusive6ExclusiveOracle的enqueue有如下类型&#xff1a;Enqueue 缩写缩写解释BLBuffer Cache managementBRBackup/RestoreCFControlfile transactionCICross-in…

Linux C语言编程基本原理与实践

重识C语言C语言是一种通用的, 面向过程的编程语言, 在系统与应用软件的开发应用较广是人类和计算机交流的一种方式ANSI C&#xff1a; 是C语言的标准, 为了避免各开发商用的C语言语法的差异C语言的特点: 简单, 快速, 高性能, 兼容性好, 功能强大, 易于学习C语言适合做什么Linux…

listview属性_属性提取器:获取ListView即时更新其元素的最佳方法

listview属性这篇文章是关于如何处理JavaFX ListViews和TableViews的&#xff0c;以及如何通过这些控件了解所包含元素的更改内容。 我想知道为什么在相关书籍中没有找到关于以下模式的任何信息&#xff0c;因为这是一个非常关键的机制。 那里的许多帖子建议通过调用以下命令来…