CString str;
int i = 1,num = 01062630301;
for(i=0;i<=100;++i)
{
num+=1;
//……写入文本
str.Format(_T("%d"),num);
MessageBox(str);
}为什么输出的结果是147534018,而不是01062630302呢?是不是类型的问题。如果是类型的问题,那么用什么类型来计算这么大的数呢?另外还有个小问题。上面的代码中。在循环写入的时候如何先把01062630301首先写入文体,在写入累加的数字。我知道可以在循环外面先写入01062630301到文本。循环开始的时候就写入加一的数到文本。这样打开文本就是01062630301开始排列走的。请问循环里如何实现?

解决方案 »

  1.   

    str.Format(_T("%o"),num);
    这样写,用o 八进制显示,就可以看到你的效果了.1062630302
    但显示的时候前面不会帮你加0的.
      

  2.   

    无论我们用16进制,8进制,10进制,赋给int num,在计算机内部,存的内容都是一样的.你可以查查内存.
    跟正常的数一样地加减乘除.
    printf的 %x %d %o ,只是显示时,转化为多少进制来显示.
      

  3.   

    给你一个例子 int dVal = 10; //十进制的10
    int oVal = 012; //八进制的10
    int xVal = 0xa; //十六进制的10
    int all = dVal + oVal + xVal;//三个加起来,30
    printf("%x,%d,%o",all,all,all);显示出来,16进制的30会是1e,而8进制的30会是36