gpt4 book ai didi

c - 如何在C中使用√符号

转载 作者:行者123 更新时间:2023-12-04 20:05:47 26 4
gpt4 key购买 nike

我想在下面写的程序中使用符号。

#include <stdio.h>
main(){
char a='√';
if (a=='√'){
printf("Working");
}
else{
printf("Not working");
}
}

不是 ASCII,这就是它不起作用的原因。但我想知道让它发挥作用。提前致谢。

最佳答案

这里有两件不同的事情需要注意:

  1. C 源文件本身 可能无法正确包含此字符。
  2. 实际程序语义中的char类型也不支持该字符。

至于第一个问题,它取决于您的平台(等),但保守地使用 C 源代码是最可移植的,这意味着只在代码文件中坚持使用 ASCII 字符。这意味着,例如,在注释中以及在有意义的代码中。也就是说,许多平台将允许并支持源文件中的 Unicode 字符。

关于第二个,char 是老式的包含字符的方式,并且限于八位字节,这意味着 arbitrary unicode characters值高于 0xFF 的值不适合它们。我假设一些非 ASCII 字符以平台相关的方式(Windows 代码页?)高于值 0x7F,但在这种情况下,我会将其视为字符串,为此字符使用 unicode 转义序列:"\u221A”

char * sqrt = "\u221A";
if (strcmp(sqrt, "\u221A") == 0) {
printf("Working");
} else {
printf("Not working");
}

请注意,C 字符串 (char*) 也不是真正围绕非 ASCII 字符设计的,因此在这种情况下,您最终会嵌入字符的 UTF8 编码表示(这是三个字节长)在 char 字符串中。这有效,保留值,并且比较有效,但是如果您要更普遍地使用 unicode...

如果您的平台支持可以容纳 Unicode 字符的“宽字符”(wchar_tunichar 或类似字符),那么您可以使用这些类型来容纳该字符,并且像您一样进行直接相等比较:

wchar_t sqrt = L'\u221A';
if (sqrt == L'\u221A') {
...

(仅供引用,请注意这些宽字符类型对于您平台上的任意 Unicode 代码点可能不够宽,因此可能适用于平方根字符,但不适用于表情符号。)


最后,为了完整起见,我很荣幸地承认,鉴于当前的开发环境/工具链目标平台,您可能可以在 widechar 中使用显式字符字面意思是这样的:

wchar_t sqrt = L'√';
if (sqrt == L'√') {
....

但是我老土,这个感觉粗略,不推荐。 :)

关于c - 如何在C中使用√符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55192398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com