我只是想知道以下是否是转换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输出整数的第一个字节而不进行任何转换。
答案 0 :(得分:4)
在第一个示例中使用%hhd
强制符合C99的printf()
转换int
,然后将其传递给char
,然后再打印它。根据您的字符是有符号还是无符号,您可能会看到244或-12作为打印值。这是否是打印它的“正确”方式值得商榷;最有可能的不是。打印字符的常规方法是使用%c
。一个问题是500
应该表示为一个角色;它的值超出char
,signed char
或unsigned 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