news 2026/4/23 6:30:07

`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/4/21 14:12:57

告别微信来回切换!1 个系统聚合所有账号,消息不漏接

有没有同款困扰?手里管着多个账号,客户消息、工作对接、业务咨询分散在各个号里,每天光是反复切换账号登录,就要浪费半个多小时,切换过程中很容易错过紧急消息其实多微信管理根本不用这么折腾!今天给大家推…

作者头像 李华
网站建设 2026/4/9 18:02:12

从零实现稳定USB3.0传输速度:回波损耗控制教程

如何让USB3.0真正跑满5Gbps?一位硬件工程师的回波损耗实战笔记最近在调试一款工业级嵌入式设备时,我遇到了一个老生常谈却又让人头疼的问题:明明芯片手册写着支持SuperSpeed USB 3.0(5 Gbps),系统也识别到了…

作者头像 李华
网站建设 2026/4/19 0:44:43

2015年最终终极版诞生~~新手操作一天6000元不是梦

{}MID:MA(CLOSE,21),COLORWHITE; UPPER:MID 1.96*STD(CLOSE,21),COLORYELLOW; LOWER:MID - 1.96*STD(CLOSE,21),COLORYELLOW; UP:MID 2.58*STD(CLOSE,21),COLORFF00FF; LOOW:MID - 2.58*STD(CLOSE,21),COLORFF00FF; {1.96统计学中为95%可信区间,2.58为…

作者头像 李华
网站建设 2026/4/22 20:41:41

PySpark 大规模造数任务优化与实施总结文档

目录 1. 项目背景与目标 2. 核心技术演进 2.1 方案对比:为什么旧方案慢? 2.2 关键代码优化点 3. 存储策略深度解析 (HDFS Block vs Spark Partition) 3.1 核心结论 3.2 各表最佳配置 4. 最终落地代码 (极速版) 4.1 通用 Python 提交脚本 (submi…

作者头像 李华
网站建设 2026/3/23 17:17:29

display driver uninstaller配合设备管理器进行硬件兼容性诊断实例

一次黑屏引发的深度清理:用 DDU 和设备管理器找回你的显卡 你有没有遇到过这样的情况——刚更新完显卡驱动,系统重启后屏幕一黑,连登录界面都进不去?或者明明换了新显卡,系统却“认”不出性能提升,甚至频繁…

作者头像 李华
网站建设 2026/4/17 19:26:48

es查询语法从0到1:手把手教你写第一个查询

从零写出你的第一个 ES 查询:手把手带你穿透 Elasticsearch 的查询语法 你有没有遇到过这样的场景?用户在搜索框里输入“无线蓝牙耳机”,系统却返回了一堆不相关的结果;或者你想查最近一小时的日志,却发现数据库查询慢…

作者头像 李华