在下面的程序中,我希望指针j
只读取变量i
的第一个字节。但它作为输出提供了巨大的值(value)。请让我知道您的看法。
#include <stdio.h>
#include <limits.h>
int main()
{
int i = 2147483647;
char *j;
j = &i;
printf("Value of i = %u\n", *j);
printf("Max value of INT = %d\n", INT_MAX);
return 0;
}
输出:
Value of i = 4294967295 Max value of INT = 2147483647
最佳答案
第一个字节恰好具有位表示,当被解释为 char 类型的值时,将产生一个小的负值。这个类型在传递给 printf 时被提升为 int 类型。然后 printf 将传递的 int 类型变量的位重新解释为 unsigned int 类型。这些位恰好代表一个很大的值。
char 类型使用说明符 c
打印。
但是您尝试打印一个字节,而不是可打印字符,因此您应该使用类型 unsigned char 和说明符 hhu
。
关于c - 指针声明中的错误数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41311434/