如何使用 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 中打印无穷大符号 [重复]的主要内容,如果未能解决你的问题,请参考以下文章