使用printf将int转换为char

时间:2012-11-28 00:17:39

标签: c printf c99

我只是想知道以下是否是转换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输出整数的第一个字节而不进行任何转换。

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

#include <stdio.h>

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

这将打印244

500 = 00000001 11110100

244 = 11110100