C语言中的“三字母词”坑了工程师
某软件工程师接盘了前同事的项目,进度一拖再拖,最后发现问题出现在如下代码:
// 注释语句 ??/
2a = b+c;
请注意代码中的“??/”,就是这注释隐藏的很深,让项目一拖再拖。
'??/'会被编译器当作 /,变成C语言的换行符(多行代码连接符)。于是这段代码等同于// 注释语句 a = b+c ;就会被注释掉。
下面我们就是说说“??/”这种“三字母词”的内容。
什么是“三字母词”
在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”,英文为'trigraph sequences'。目的主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。
三字母词 | 对应的字符 |
??= | # |
??( | [ |
??) | ] |
??< | { |
??> | } |
??/ | / |
??! | | |
??' | ^ |
??- | ~ |
“三字母词”例子
printf('Eh???/n');
printf('Eh/n');
printf('Delete file (are you really sure??):');
Delete file (are you really sure]:
Delete file (are you really sure??):
最后
赞 (0)