如何使用 printf 在 C 中打印无穷大符号 [重复]

Posted

技术标签:

【中文标题】如何使用 printf 在 C 中打印无穷大符号 [重复]【英文标题】:How do I print the infinity symbol in C using printf [duplicate] 【发布时间】:2013-04-11 07:19:53 【问题描述】:

我尝试了以下

printf ("%c", 236);   //236 is the ASCII value for infinity

但我只是在屏幕上得到垃圾输出。

对于小于 128 的 ASCII 值,printf 可以正常工作。所以我尝试了以下

printf ("%c", 236u);  //unsigned int 236

我仍然只是得到垃圾而已。那么,我应该怎么做才能让 printf 显示 128 到 255 的 ASCII 值。

【问题讨论】:

236 肯定不是“无穷大的 ASCII 值”。 ASCII 最多只能定义 127 个。其余的都是“代码页”。 哦。我指的是这个链接cdrummond.qc.ca/cegep/informat/Professeurs/Alain/files/…。在那种情况下,我该如何打印无穷大符号? printf("\xe2\x88\x9e\n"); @DanielKamilKozar .. 是的,我在Windows 7 机器上运行此程序,并支持MinGW。我觉得 DhruvPathak 评论中的链接非常贴切,因为特殊字符的显示取决于终端。 Karthik,您提供的链接已过时。显示的代码页是 OEM 437 或更广为人知的 IBM-PC 字符集。您需要使用 MS-DOS 或 Windows 下的命令行来显示您的角色。 en.wikipedia.org/wiki/Code_page_437 【参考方案1】:

就像已经提到的 cmets 中的其他所有人一样,您将无法可靠地打印 127 之后的字符(并假设它为 ASCII),因为 ASCII 仅定义为 127。此外,您看到的输出很大程度上取决于终端设置(即配置为哪个区域设置)。

如果您可以使用 UTF-8 进行打印,您可以尝试wprintf,如下所示:

#include <stdio.h>
#include <wchar.h>
#include <locale.h>

int main()

    setlocale( LC_ALL, "en_US.UTF-8" );
    wprintf (L"%lc\n", 8734);
    return 0;

它将产生以下输出:

8734(或0x221E)等效于符号 的UTF-8 UNICODE 字符。

【讨论】:

请注意,这不适用于 MSVC,因为它不支持带有 UTF8 的 setlocale @msam - 我几乎不使用 Windows 环境进行编译,现在也没有一个方便的。您知道需要为 MSVC 设置的等效英语美国 UTF-8 语言环境吗?我可以用该信息更新答案。 :) 在 Windows setlocale( LC_ALL, "C" ); wprintf (L"%lc\n", 236); 上(或者只是 printf ("%c", 236);,因为 C 语言环境是在程序启动时设置的)对无穷大 (∞) 符号执行此操作 - 当然,这是特定于此案例。【参考方案2】:

标准 C 没有无限的符号。这是由你的实现(例如你的编译器、你的操作系统、你的终端和你的硬件)来定义的。考虑到 C 在设计时考虑到了使用非 ASCII 字符集(例如 EBCDIC)的系统的可移植性。

【讨论】:

以上是关于如何使用 printf 在 C 中打印无穷大符号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在C中打印带符号的十六进制

如何在 C 中使用扩展 ASCII 表的符号?

如何在 C 中打印百分号(%)? [复制]

为什么printf()在实际数据之前打印ffffff。 C [重复]

C语言——格式化打印printf(常用整理)

printf函数的类型转换问题