int amount;
            string current="";
            do
            {
                int nextDigit = amount % 8;
                int digitCode = '0' + nextDigit;
                char digit = Convert.ToChar(digitCode);
               
                current = digit + current;
                steps.Text += current + "\n";
                amount /= 8;
            }
            while (amount != 0);我认为          int digitCode = '0' + nextDigit;
                char digit = Convert.ToChar(digitCode);
这两段是多余的,直接改成char digit=Convert.ToChar(digitCode);不就好了
可书上说表达式'0' + nextDigit得到的值对应于等价的八进制数位的代码
这个解释有点糊涂了

解决方案 »

  1.   

    不多余,调试一下,int digitCode = '0' + nextDigit;这句的意思是把nextDigit的ASCII码复制给digitCode,然后转换成ACSII对应的字符再进行拼接
      

  2.   

    不过貌似可以改成这样int nextDigit = amount % 8;
    //int digitCode = '0' + nextDigit;
    //char digit = Convert.ToChar(digitCode);
    current = nextDigit.ToString() + current;
      

  3.   

    '0' 是有用的
    int nextDigit = amount % 8;
    int zero = '0';
    int digitCode = zero + nextDigit;
    char digit = Convert.ToChar(digitCode);
    你可以单独运行下红字部分看看 int 类型的 zero 的值
      

  4.   


    zero的值是48,对应于ASCII码,但是如果直接改成下面这样不是更简单int nextDigit = amount % 8;
      
      char digit = Convert.ToChar(nextDigit);
        
      current = digit + current;
      

  5.   

    结果不一样的,你运行下试试,这样写 digit 值是 0-7 ,都是特殊符号