如何获得LONG_MAX八进制值

时间:2016-01-22 20:22:36

标签: c printf

我试图用这个递归函数打印出LONG_MAX的八进制值(包含在limits.h中):

Console.WriteLine(new Point(1, 1).ToString());
Console.WriteLine((object)new Point(1, 1));

所以我称之为:ft_get_nbr_base(LONG_MAX," 01234567",1);

结果是:777777777777777777777 当我做printf("%o",LONG_MAX)时,我得到void ft_get_nbr_base(long int nb, char *base, int i) { int size_base; int size_nb; char *str; size_base = ft_strlen(base); if (nb >= size_base) ft_get_nbr_base(nb / size_base, base, i); if (i == 1) ft_putchar(base[(long int)(nb % size_base)]); if (i == 2) ft_putchar(ft_toupper(base[(long int)(nb % size_base)])); } 。你能解释一下我如何得到与printf相同的结果以及为什么它会显示出这种差异?感谢

1 个答案:

答案 0 :(得分:3)

尝试

fprintf(stdout, "%lo\n", LONG_MAX);

由于long int需要"l"修饰符,编译器会对此发出警告,并且在任何printf()手册中都非常清楚。