0 、 '0' 、 "0" 、 ’\0’ 区别
① ‘0’ 代表 字符0 ,对应ASCII码值为 0x30 (也就是十进制 48)
② '\0' 代表 空字符(转义字符)【输出为空】, 对应ASCII码值为 0x00(也就是十进制 0), 用作字符串结束符
③ 0 代表 数字0, 若把 数字0 赋值给 某个字符,对应ASCII码值为 0x00(也就是十进制0)
④ “0” 代表 一个字符串, 字符串中含有 2个字符,分别是 '0' 和 '\0'
下面补充说明(帮助理解)
① char ch_0 = ‘0’; // 字符0 赋值给一个字符,实际赋的 码值 为 0x30,十进制48
std::cout << ch_0 << '\n'; // 输出的 是 码值0x30 对应的 字符 0, 界面上看到的是0
std::cout << int(ch_0) << '\n'; // 输出的 是字符 ‘0’ 对应的码值 0x30,即十进制48 ,界面上看到的是 48
② char ch_0 = '\0'; // 字符‘\0' 赋值给一个字符,实际赋的 码值 为 0x00,十进制0
std::cout << ch_0 << '\n'; // 输出的 是 码值0x00 对应的 空字符【NULL】, 界面上看到的是 空白,什么也看不见
std::cout << int(ch_0) << '\n'; // 输出的 是字符 ‘\0’ 对应的码值 0x00,即十进制0 ,界面上看到的是 0
③ char ch_0 = 0; // 数字0 赋值给一个字符,实际赋的是 码值
std::cout << ch_0 << '\n'; // 输出的 是 码值0 对应的 字符,此处为 空白字符,即输出为空,界面上什么也看不见
std::cout << int(ch_0) << '\n'; // 输出的 是码值 0x00,即十进制0 ,界面上看到的是0
④ char ch_0[ ] = "0"; // 字符串 “0” 初始化字符数组
std::cout << sizeof(ch_0) << ‘\n’; // 输出 ch_0 字节数, 界面显示 为2
std::cout << ch_0[0] << '\n'; // 输出字符 ‘0’,界面上看到的是 0
std::cout << ch_0[1] << '\n'; // 输出字符 ‘\0’,界面上看到的是 空白
std::cout << int( ch_0[0] )<< '\n'; // 输出字符 ‘0’ 对应的码值 0x30,界面上看到的是 48
std::cout << int ( ch_0[1] )<< '\n'; // 输出字符 ‘\0’ 对应的码值 0x00,界面上看到的是 0
总结:记住几点
① 用 数值 给 某个 字符变量 赋值时,相当赋 与该数字相同码值 所对应的字符
② 用 字符 给 某个 字符变量赋值时, 即 赋 字符本身
③ ‘\0’ 对应的 码值为0, 界面显示为 空白
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架