我有循环数字并创建该整数的字符数组表示的代码。所以对于像 1234 这样的数字,我得到一个看起来像 {'1', '2', '3', '4'}
部分代码如下所示:
do {
//print here
c[i++] = (char)(((int)'0')+(num - (num/10)*10 ));
} while ((num = num/10) != 0);
当涉及大型数据类型(如 long long int)时,我遇到了问题:18446612134627563776
我在循环中打印的值是:
18446612134627563776
18446730879801352832
18446742754318731738
...
18446744073709551615
值应该是
18446612134627563776
1844661213462756377
184466121346275637
...
18
1
奇怪的是循环终止了。最后打印的值是18446744073709551615 != 0
,所以不确定它为什么会在那里终止。我认为这是我做得不对的数据类型的一些问题。
这是打印语句:
printk("long=%llu sec=%llu , char=%c\n", num, (num/10)*10, (char)(((int)'0')+((num - (num/10)*10 ))));