背景: 在Mac OS版本9以前的版本中,文本文件的标准表示forms使用ASCII CR(回车)字符(值为十进制数13)标记行的结尾。 与早期版本不同,Mac OS 10与UNIX类似,使用ASCII LF(换行符)字符(值为十进制10)标记行的结尾。 问题是,在OS X之前的Mac OS版本的C和C ++编译器中,字符常量'\n'和'\r'的值是多less? 至less有两种可能的方法可以采取: 将'\n'视为ASCII LF字符,并将其转换为从CR输出到文本stream的input(类似于Windows系统上的LF和CR-LF之间的转换); 要么 将'\n'视为ASCII CR字符,不需要在input或输出上进行转换。 第二种方法会有一些潜在的问题。 一个是假设'\n'是LF的代码可能会失败。 (无论如何,这样的代码本质上是不可移植的。)另一个是对'\r'仍然需要一个不同的值,而在基于ASCII的系统上,CR是唯一合理的值。 而C标准不允许'\n' == '\r' (感谢mafsofind引用,5.2.2第3段),所以其他一些值将被用于'\r' 。 这个C程序的输出在Mac OS N下编译和执行, N小于10是什么? #include <stdio.h> int main(void) { printf("'\\n' = %d\n", '\n'); printf("'\\r' = %d\n", '\r'); if ('\n' == '\r') { printf("Hmm, this could be a problem\n"); } […]