什么是门户网站广告东莞大朗
2026/2/14 17:44:41 网站建设 项目流程
什么是门户网站广告,东莞大朗,西宁最好的建站公司,电子商务网站的全面建设提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录一、先搞懂两个核心编码概念#xff08;通俗版#xff09;二、完整流程拆解#xff1a;从.cpp文件到输出“哈哈”#xff08;VS编译运行#xff09;阶段1#…提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档文章目录一、先搞懂两个核心编码概念通俗版二、完整流程拆解从.cpp文件到输出“哈哈”VS编译运行阶段1翻译阶段源代码解析对应source-charset阶段2生产阶段生成运行代码对应execution-charset阶段3运行阶段程序执行变量赋值阶段4输出阶段cout打印三、解答你最关心的几个具体问题1. “把字符串常量打包成UTF-8格式放到最终程序里”是什么意思2. string s哈哈 字符串存入变量是什么阶段放入变量就是放在程序里吗3. 翻译阶段和生产阶段的核心区别总结这里有几个问题我不清楚源代码解析编码、运行时字符串编码是什么意思这个我搞不清楚只管 “生产阶段”仅告诉编译器 “把代码里的字符串常量打包成 UTF-8 格式放到最终程序里”。 这个放在程序中是什么意思string s“哈哈” 字符串常量存放进入变量里面是什么阶段放入变量就是放在程序里面的意思吗你说的生产阶段和翻译阶段我还是不等一个某种编码cpp文件边vs编译读取到变量并输出这个过程你详细说一下你想弄明白“源代码解析编码”“运行时字符串编码”的具体含义还想清楚从UTF-8编码的.cpp文件被VS编译到string s哈哈里的字符串存入变量、最终输出的完整过程尤其是“翻译阶段”“生产阶段”对应的实际操作以及“把字符串打包到程序里”到底是什么意思——我用“写纸条→翻译→打包→运行”的通俗比喻一步步拆解整个流程你就能彻底理解了。一、先搞懂两个核心编码概念通俗版把编译器和程序比作“翻译员仓库管理员”编码就是“沟通规则”编码类型通俗解释类比场景源代码解析编码source-charset编译器“读懂”你写的.cpp文件的规则相当于翻译员读你写的纸条的规则你用“UTF-8字体”写了“哈哈”在纸条上翻译员默认只会认“GBK字体”得告诉他按UTF-8认运行时字符串编码execution-charset编译器把“纸条上的关键内容”抄到“运行时手册”.exe程序里的书写规则翻译员把“哈哈”抄到手册里时用UTF-8写还是GBK写程序运行时就按这个规则读二、完整流程拆解从.cpp文件到输出“哈哈”VS编译运行我们以最常见的场景为例你的.cpp文件是无BOM的UTF-8编码新手最常遇到的格式代码核心是string s哈哈; cout s;全程用VS2019/2022编译运行。整个过程分4个阶段每个阶段讲清楚“做什么、编码怎么作用、‘哈哈’发生了什么变化”阶段1翻译阶段源代码解析对应source-charset核心动作编译器cl.exe打开你的.cpp文件逐字节“读”文件内容把字符转换成自己能处理的内部格式比如Unicode。编码的关键作用解决“编译器能不能认对‘哈哈’”的问题。无设置默认情况编译器按GBK编码页936解析文件字节。“哈哈”的UTF-8字节是E5 93 88 E5 93 886个字节但编译器按GBK规则拆会把这6个字节当成3个GBK字符比如乱码“铪铪”甚至因为字节组合不合法直接报「常量中有换行符」「语法错误」——这就是“解析失败”编译都过不了。设了/source-charset:utf-8编译器按UTF-8规则解析这6个字节正确识别出是“哈哈”两个字转换成内部的Unicode格式U54C8 U54C8——这一步编译器才算“读懂”了你的代码。阶段2生产阶段生成运行代码对应execution-charset核心动作编译器把“读懂”的代码转换成计算机能执行的机器指令同时处理字符串常量。编码的关键作用解决“把‘哈哈’以什么格式存到.exe里”的问题。关键操作编译器会把内部的“哈哈”Unicode再转换成execution-charset指定的编码比如UTF-8然后把这些字节E5 93 88 E5 93 88打包到最终生成的.exe文件里——这就是“把字符串常量放到程序里”的具体含义重要说明.exe文件不只是“执行指令”还有一块专门的“常量数据区”硬盘上“哈哈”的UTF-8字节就存在这里此时还没有“变量s”变量是运行时才有的。阶段3运行阶段程序执行变量赋值核心动作你双击.exe文件操作系统把.exe加载到内存CPU执行机器指令。“哈哈”存入变量的过程程序运行到string s哈哈这一行时先从.exe的“常量数据区”硬盘加载到内存读取“哈哈”的UTF-8字节E5 93 88 E5 93 88操作系统在内存里开辟一块空间创建string类型的变量s把读取到的“哈哈”字节复制到s的内存空间里——这就是“字符串常量存入变量”这个过程发生在运行阶段不是编译阶段。阶段4输出阶段cout打印核心动作程序执行cout s把变量s里的字节输出到Windows控制台。编码的坑Windows控制台默认用GBK编码页936显示内容如果直接输出UTF-8字节控制台会把E5 93 88 E5 93 88按GBK解析显示成乱码比如“鍝堝搱”。解决办法加SetConsoleOutputCP(65001)告诉控制台“按UTF-8规则解析显示字节”这样就能正确输出“哈哈”。三、解答你最关心的几个具体问题1. “把字符串常量打包成UTF-8格式放到最终程序里”是什么意思最终生成的.exe文件在硬盘上有两个核心部分① 机器指令告诉CPU该做什么比如“创建变量s”“输出s”② 常量数据区存放固定不变的内容比如哈哈的字节、数字100等。“打包到程序里”就是编译器把哈哈转换成UTF-8字节写入.exe的“常量数据区”——程序没运行时这些字节就躺在硬盘的.exe文件里运行时才被加载到内存。2.string s哈哈字符串存入变量是什么阶段放入变量就是放在程序里吗存入变量运行阶段只有双击.exe程序跑起来后才会执行这一步不是一回事“放在程序里”编译阶段字节存在硬盘的.exe文件里静态的不运行也在“放入变量”运行阶段字节从.exe加载到内存的变量中动态的程序关了就没了。3. 翻译阶段和生产阶段的核心区别翻译阶段编译器“读文件、懂代码”处理的是硬盘上的.cpp文件核心是“解析”生产阶段编译器“写.exe、存常量”处理的是要生成的.exe文件核心是“生成”。总结源代码解析编码source-charset管编译器“能不能读对”代码里的字符解决编译报错问题运行时字符串编码execution-charset管编译器“把字符存成什么格式”到.exe里解决运行时乱码问题string s哈哈“哈哈”先在编译阶段以指定编码存到.exe里运行阶段才加载到内存的变量s中输出时还要匹配控制台编码才不会乱码。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询