我试图用这个递归函数打印出 LONG_MAX 的八进制值(包含在 limits.h 中):
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)]));
}
所以我这样调用它:ft_get_nbr_base(LONG_MAX, "01234567", 1);
结果是:77777777777777777777
而当我执行 printf("%o", LONG_MAX) 时,我得到 37777777777
。你能解释一下如何获得与 printf 相同的结果以及为什么它显示出这种差异吗?谢谢
最佳答案
关于c - 如何获得 LONG_MAX 八进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34955295/