goto

gotoが巧みに使われていて驚きました。

って皮肉のように聞こえる。実際、あれはgotoを使わざるを得ない場面だっただと思うが。下のソースをgoto抜きで書くとどうなるんだろう。

  int length;
  {
    {
      int modbits=index & ((1<<(LEVEL1*2))-1);
      if(modbits==0 && (!x_l1[hashx1(index)]))
        {
          goto lev1xb;
        }
      length = (1<<(LEVEL1*2)) - modbits;
    }
  lev0x:
    if(length >= contin0)
      {
        length=contin0;
      }
    for(j=0;j= contin0)
      {
        length=contin0;
      }
    for(j=0;j