news 2026/9/4 5:27:17

`printf(“%d“,sizeof ‘a‘); c语言与C++语言结果不一样

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
`printf(“%d“,sizeof ‘a‘); c语言与C++语言结果不一样

你提供的代码中有一句printf("%d",sizeof 'a');,并在注释中提到:

c的话结果是4, C++的话结果是1

这是因为在 C 和 C++ 中,对字符常量的sizeof行为不同。


C 语言的情况

在 C 中,字符常量(如'a')的类型是int,而不是char
所以sizeof('a')在 C 中等于sizeof(int),在大多数系统上(32位或64位)通常是4


C++ 的情况

在 C++ 中,字符常量(如'a')的类型是char
所以sizeof('a')在 C++ 中等于sizeof(char),根据 C++ 标准,它总是1


代码验证

你的代码是用.c扩展名编译(C 编译器)的话,输出应该是4(假设int是 4 字节)。
如果用.cpp扩展名编译(C++ 编译器),输出是1


为什么有这种区别?

这是两种语言在历史上的设计差异:

  • C 将字符常量视为int,主要是为了与早期类型系统兼容,并方便处理 EOF 等特殊值。
  • C++ 为了类型安全与重载匹配的便利,将字符常量的类型定为char
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 21:08:45

一文说清KiCad中差分对布线核心要点

差分对布线实战指南:在KiCad中如何真正做好高速信号设计 你有没有遇到过这样的情况——电路原理图画得一丝不苟,元器件选型也完全符合规格书要求,可板子一上电,USB就是连不上,以太网频繁掉线,DDR跑不到标称…

作者头像 李华
网站建设 2026/9/3 2:05:24

AUTOSAR网络管理与UDS诊断协同工作机制解析

AUTOSAR网络管理与UDS诊断协同工作机制解析从一个真实开发场景说起某天,售后工程师拿着诊断仪连接客户车辆的OBD接口,准备读取故障码。然而设备反复提示“通信超时”——奇怪的是,刚上电时能短暂连上,几秒后又断开。排查发现&…

作者头像 李华
网站建设 2026/9/3 0:40:14

​2026教师资格证报名照全攻略:要求·制作·审核避坑一次过审​

2026教师资格证报名照全攻略:要求制作审核避坑一次过审 报名照驳回报名失败!收藏这篇,搞定教资照片所有难题 | 2026教资考生必看 发布时间:2026-01-09 | 分类:教师资格证报名攻略 | 标签:2026教资报名照、…

作者头像 李华
网站建设 2026/9/3 10:45:19

AUTOSAR网络管理与UDS诊断联动设计示例

AUTOSAR网络管理与UDS诊断联动:从机制到实战的深度解析你有没有遇到过这样的场景?一辆车停在维修工位上,技师用诊断仪尝试连接某个ECU——屏幕显示“通信失败”。可明明电源正常、线路无断路,重启几次后又突然连上了。再一查日志&…

作者头像 李华
网站建设 2026/8/31 22:54:16

机器人关节模组CR认证全解析

关节模组的中国CR认证”,指的是中国官方针对机器人关键零部件——关节模组的国家强制性认证体系。它为这类核心部件的安全、性能和可靠性设立了统一的市场准入门槛。 📜 CR认证的核心内涵 你可以从以下四个层面来理解它: 官方背景&#xff…

作者头像 李华
网站建设 2026/9/1 22:48:14

ARM7快速中断(FIQ)工作机制:认知型全面讲解

ARM7的FIQ机制:为什么它能在2个周期内响应中断?你有没有遇到过这样的场景:高速ADC每10微秒就产生一个数据,稍有延迟就会溢出;或者UART以1Mbps速率接收串行帧,主程序一卡顿,数据就丢了。这时候&a…

作者头像 李华