金环建设集团网站,潍坊商城网站建设,广告行业包括网站建设吗,Wordpress 新建标签某软件工程师接盘了前同事的项目#xff0c;进度一拖再拖#xff0c;最后发现问题出现在如下代码#xff1a;// 注释语句 ??/2a b c;请注意代码中的“??/”#xff0c;就是这注释隐藏的很深#xff0c;让项目一拖再拖。??/会被编译器当作 /#xff0c… 某软件工程师接盘了前同事的项目进度一拖再拖最后发现问题出现在如下代码// 注释语句 ??/2a b c;请注意代码中的“??/”就是这注释隐藏的很深让项目一拖再拖。??/会被编译器当作 /变成C语言的换行符多行代码连接符。于是这段代码等同于// 注释语句 a b c ;就会被注释掉。下面我们就是说说“??/”这种“三字母词”的内容。什么是“三字母词”在ANSI标准中定义了“三字母词”或者成为“三联符序列”英文为trigraph sequences。目的主要是为了在一些特定的字符集中比如一些七位代码集中解决一些特定字符的输入问题。也许是由于这些字符集我们基本上用不到所以在大多数C语言的书籍中我们都看不到对“三字母词”的讲解。这里资料来源于参考ANSI C99标准即传说中的《American National Standards Institute for Programming Languages-C》 1999年我们习惯简称为“C99”。“三字母词”主要有9个分别为源代码中的“三字母词”在编译阶段会被替换为“对应的字符”。对于以“?”开头的字符序列如果不能与上面9个匹配编译器将保持原状一旦匹配编译器就会做替换。“三字母词”例子例子1C99标准中给出的例子printf(Eh???/n);相当于printf(Eh/n);例子2一个我们容易犯的错误摘自《Pointers On C》printf(Delete file (are you really sure??):);运行结果为三字母词“??)”编译时替换为“]”Delete file (are you really sure]:而不是我们想象中的Delete file (are you really sure??):最后由于编译器的种类各样对ANSI C的支持也不一样所以可能会有些C编译器不处理“三字母词”会将它们当做普通的字符串来处理。声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。