【发布时间】:2014-04-25 10:50:43
【问题描述】:
我已经开始用 C 编写一些代码,但我对这种语言还比较陌生。我有一个很长的数字,想将它转换为一个 int 数组。在做了一些研究后,我创建了以下函数:
long long* convertNumberToArray(long long* number, int* length){
*length = trunc(log10(*number))+1;
long long num_array[*length];
int i=*length-1;
while(*number!=0)
{
//when this line is added it works!
//printf("fun: modulo: %lld", *number%10);
num_array[i] = *number%10;
*number = truncl(*number/10);
i--;
}
long long* return_array = num_array;
return return_array;
}
奇怪的是,如果我按原样运行它,例如给出以下数字 123456 我从 main 得到以下输出:
main: 1
main: 2
main: 3
main: 4
main: 5059987506418679813
main: 5473089784
当我添加注释行时
printf("fun: modulo: %lld", *number%10)
结果正确且符合预期:
main: 1
main: 2
main: 3
main: 4
main: 5
main: 6
我无法理解这种行为以及为什么在插入上述行时它会起作用。 任何提示或帮助将不胜感激。
提前致谢, 迪娜
【问题讨论】: