使用printf将int转换为char

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

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

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

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

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

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

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

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

这将打印244

500 = 00000001 11110100

244 = 11110100