news 2026/2/5 3:44:43

`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/1/30 12:16:29

CANFD与CAN的区别:收发器设计对比图解说明

CAN FD 与传统 CAN 的本质差异:从协议到收发器的深度剖析你有没有遇到过这样的情况——在调试一个车载ECU时,明明代码逻辑没问题,但通信就是不稳定?尤其是当你试图通过CAN总线进行OTA升级或接收雷达数据流时,传输慢得像…

作者头像 李华
网站建设 2026/1/29 21:44:25

Keil添加文件高效管理技巧:提升项目组织效率

Keil文件管理实战:如何科学组织你的嵌入式项目工程在嵌入式开发的世界里,一个整洁、高效的项目结构往往决定了你是在“写代码”还是在“修工程”。尤其当你使用Keil MDK(uVision)进行ARM Cortex-M系列微控制器开发时,随…

作者头像 李华
网站建设 2026/2/5 16:46:19

轮胎材质对循迹性能影响:系统学习笔记

轮胎材质如何“悄悄”决定你的循迹小车跑得多稳?你有没有遇到过这种情况:PID参数调了整整三天,传感器布局反复优化,代码逻辑也检查无数遍,结果小车一进弯道还是“原地转圈”或者“蛇形走位”?别急着怪算法—…

作者头像 李华
网站建设 2026/2/4 10:59:00

架构之最终一致性

架构之最终一致性 概述 在分布式系统中,AP、CP是不能同时满足的,这是铁律。根据CAP定理,当网络分区发生时,系统必须在一致性(Consistency)和可用性(Availability)之间做出选择。为了…

作者头像 李华
网站建设 2026/2/3 14:47:34

Batocera游戏整合包图解说明:适合全家人的怀旧游戏中心

用一个U盘,把老电视变成全家人的游戏厅:Batocera整合包实战指南 你有没有试过在某个周末的晚上,翻出尘封多年的红白机卡带,想和孩子一起玩一局《超级马里奥》?结果发现主机接口氧化、画面闪烁,折腾半小时也…

作者头像 李华
网站建设 2026/2/4 16:48:34

Excel/CSV转GIS:一键WKT转gdf、Shapefile等图层

Python数据处理:如何将Excel/CSV中的WKT文本转换为Shapefile/GeoJSON——tablegis库df_to_gdf详解 前言 在地理数据处理中,我们经常遇到一种尴尬的情况: 从数据库(PostGIS, MySQL, ClickHouse)导出的数据,或…

作者头像 李华