mac os c语言 编译器,在旧Mac OS的C编译器下,'\ n'的值是什么?

背景:

在Mac OS最高版本9的版本中,文本文件的标准表示形式使用ASCII CR(回车)字符(十进制13的值)标记一行的结尾。

Mac OS 10与早期版本不同,它类似于UNIX,并使用ASCII LF(换行符)字符(十进制值10)标记行尾。

问题是,在OS X之前的Mac OS版本的C和C ++编译器中,字符常数'\n'和'\r'的值是多少?

至少有两种可能的方法可以采用:

将'\n'视为ASCII LF字符,并在文本流的输出和输入中将其与CR进行来回转换(类似于Windows系统上LF和CR-LF之间的转换); 要么

将'\n'视为ASCII CR字符,不需要在输入或输出上进行转换。

第二种方法会存在一些潜在的问题。 一种是假定'\n'为LF的代码可能会失败。 (无论如何,此类代码本来就是不可移植的。)另一个是'\r'仍需要一个不同的值,而在基于ASCII的系统上,CR是唯一明智的值。 而且C标准不允许'\n'(感谢mafso查找引文,5.2.2第3段),因此'\r'必须使用其他一些值。

当Mac OS N在N小于10的情况下编译和执行时,此C程序的输出是什么?

#include

int main(void) {

printf("'\\n' = %d\n", '\n');

printf("'\\r' = %d\n", '\r');

if ('\n' == '\r') {

printf("Hmm, this could be a problem\n");

}

}

这个问题适用于C和C ++。 我想答案对两个都是一样的。

从一个C编译器到另一个C编译器,答案也可能有所不同-但我希望编译器实现者能够保持彼此的一致性。

明确地说,我不是在问Mac OS的旧版本用来表示文本文件中的行尾的表示形式。 我的问题是专门且仅关于C或C ++源代码中的常量'\n'和'\r'的值。 我知道将'\n'(无论其值是什么)打印到文本流都会导致将其转换为系统的行尾表示形式(在本例中为ASCII CR); C标准要求该行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值