为什么从数组的整数不转换?

  • 本文关键字:整数 转换 数组 c
  • 更新时间 :
  • 英文 :


用户输入的整数假定以不同的转换方式扫描每个数字(%d, %i, %o, %u, %x),然后在%d中打印。这是我得到的输出:437 437 287 437 1079我应该得到:437 437 665 437 1b5

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LENGTH 5
int main()
{
int array[LENGTH];
printf("Enter the value 437 five times: ");
scanf("%d", &array[0]);
scanf("%i", &array[1]);
scanf("%o", &array[2]);
scanf("%u", &array[3]);
scanf("%x", &array[4]); 

printf("nRead with %%d:");
printf("n%d", array[0]);
printf(" %d", array[1]);
printf(" %d", array[2]);
printf(" %d", array[3]);
printf(" %d", array[4]); 

}

例如,十进制的八进制值437等于4 * 8^2 + 3 * 8^2 + 7 * 8^0 = 256 + 24 + 7 = 287

也就是说,如果您使用转换说明符%o,那么输入的数字将被解释为八进制数字。对于将输入的数字解释为十六进制数字的转换说明符%x也是如此。

最新更新