0

我只是想知道以下是否是将 int 转换为 char 的正确方法

#include <stdio.h>

int main()
{
   int x = 500;
   printf("%hhd\n", x);
}

另外,从上面我想知道是否应该执行以下操作来显示字符的值。

#include <stdio.h>

int main()
{
   char c = 'a';
   printf("%hhd\n", c);
}

还是会printf("%d\n", c);很好?所以,基本上我试图通过 printf 输出整数的第一个字节而不进行任何转换。

4

2 回答 2

5

在您的第一个示例中使用%hhd强制 C99 兼容在打印之前将其printf()转换int为传递给它。char根据您的字符是有符号还是无符号,您可能会看到 244 或 -12 作为打印的值。这是否是“正确”的打印方式值得商榷。很可能不是。打印字符的正常方法是使用%c. 一个问题是500应该代表一个角色。它的值超出了char, signed charorunsigned char类型的范围(几乎在所有平台上)。如果它是 Unicode 字符或其他宽字符值,那么您可能需要使用宽字符格式化变体 - wprintf().

您使用%c格式和普通char'a'的第二个示例表现良好且传统。这将打印字母“a”。如果您使用%hhd,它也可以工作并且通常会打印 97 (您必须在不寻常的计算机上才能获得不同的值)。

于 2012-11-28T00:40:46.337 回答
2
#include <stdio.h>

int main()
{
   int x = 500;
   printf("%hhu\n", x);
}

这将打印244

500 = 00000001 11110100

244 = 11110100

于 2012-11-28T18:53:46.317 回答