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…

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

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

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;安全…

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

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

Linux C语言结构体

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

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

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

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

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

30分钟了解C 11新特性

什么是C 11C 11是曾经被叫做C 0x&#xff0c;是对目前C 语言的扩展和修正&#xff0c;C 11不仅包含核心语言的新机能&#xff0c;而且扩展了C 的标准程序库&#xff08;STL&#xff09;&#xff0c;并入了大部分的C Technical Report 1&#xff08;TR1&#xff09;程序库(数学的…

外链分享已取消无法下载怎么办_微信升级外链规范:“砍一刀”、“帮我加速吧”将被封禁...

北京商报讯(记者魏蔚)朋友圈、微信群遍布的购物分享链接&#xff0c;再度受到微信严控。10月18日晚间&#xff0c;微信宣布&#xff0c;外链规范即将进行更新升级&#xff0c;新增和细化多项外链规则&#xff0c;包括不可违规使用用户头像&#xff1b;不可诱导、误导下载/跳转&…

ef ddl生成不了脚本_如何使用Hibernate从Play生成DDL脚本! 框架项目

ef ddl生成不了脚本好的&#xff0c;因此您一直在使用hibernate属性名称“ hibernate.hbm2ddl.auto ” value “ 更新 ”来不断更新数据库模式&#xff0c; 但是现在您需要一个完整的DDL脚本吗&#xff1f; 从您的Global Class onStart中使用此方法来导出DDL脚本。 只需为其提…

vue php企业站案例,vue 开发企业微信整合案例分析

本文实例讲述了vue 开发企业微信整合。分享给大家供大家参考&#xff0c;具体如下&#xff1a;概述手机端程序可以和企业微信进行整合&#xff0c;我们也可以使用企业微信JSSDK功能&#xff0c;实现一些原生的功能。整合步骤在整合之前需要阅读 整合步骤。1.引入JSSDKnpm i -S …

Invalid Gradle JDK configuration found_带你了解Gradle编译速度是如何提升70%的

前言Gradle作为一款基于Groovy语言的构建工具&#xff0c;已经吸引众多的ant&#xff0c;maven使用者转投gradle的怀抱&#xff0c;和Gradle相比&#xff0c;ant显得冗余复杂&#xff0c;maven显得有些死板落后&#xff0c;而gradle基于DSL语法&#xff0c;特点明显&#xff1a…

【游戏开发】C 游戏编程实例

网络游戏开发分为&#xff1a;服务器编程、客户端编程、人工智能、数据库管理、游戏策划、美工设计、音乐特效等。大型游戏往往需要团队合作开发&#xff0c;因此面向对象的编程思想在网络游戏中得到了广泛应用。游戏开发基本流程&#xff1a;游戏初始化——游戏实现——游戏结…

linux内核3.14.4,Linux内核4.14.14,4.9.77,4.4.112和3.18.92更新发布

原标题&#xff1a;Linux内核4.14.14&#xff0c;4.9.77&#xff0c;4.4.112和3.18.92更新发布导读正如所承诺的&#xff0c;Linux内核维护者Greg Kroah-Hartman今天发布了针对长期支持的Linux 4.14,4.9,4.4和3.18内核系列的一系列新更新。这些新内核在他们之前发布的一个星期后…

springboot 获取登录浏览器_java项目部署到linux服务器,微信小程序后台springboot项目部署到云服务器(图文详解)...

前面给大家讲了一个点餐系统的开发&#xff0c;包括java点餐后台和微信点餐小程序。可是都是教大家如何在本地把项目跑起来。今天就来教大家如何把这个点餐系统部署到服务器&#xff0c;实现商用。传送门点餐系统的开发&#xff0c;java后台微信小程序&#xff1a;https://blog…

spring体系结构_了解Spring Web应用程序体系结构:经典方法

spring体系结构每个开发人员必须了解两件事&#xff1a; 架构设计是必要的。 花哨的体系结构图没有描述应用程序的真实体系结构。 真正的体系结构是从开发人员编写的代码中找到的&#xff0c;如果不设计应用程序的体系结构&#xff0c;最终将得到一个具有多个体系结构的应用…

C 网络库都干了什么?

虽然市面上已经有很多成熟的网络库&#xff0c;但是编写一个自己的网络库依然让我获益匪浅&#xff0c;这篇文章主要包含&#xff1a;TCP 网络库都干了些什么&#xff1f;编写时需要注意哪些问题&#xff1f;CppNet 是如何解决的。首先&#xff0c;大家都知道操作系统原生的soc…