1. Си / Говнокод #27042

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    double func_atof(char *p){
    
    	double	 integer = 0.0, div = 1.0 , fract = 0.0 , sign = 1.0;
            
            if(   *p == 45  ){
                      sign = -1.0, *p++ ; 
              }
    	
            while ( isdigit(*p)  ) { 
    	         
                integer = ( *p++ )  +  (10.0   *   integer)  -  48.0 ; 
    	}
    	
             if(*p == 46  ){
    
    	            (*p++ ) ;
    	
            while (  isdigit(*p) )  {
    		
                 fract = ( *p++ )  +  (10.0   *   fract)  -  48.0  ; 
    		
                 div *= 10;		
    
    		}
    
        }
      
    return    (integer  +   fract  / div )  * sign    ;
    }

    Наше всё Гайвер и Сорокин

    Запостил: Oh-my-God-my-leg, 19 Октября 2020

    Комментарии (14) RSS

    • "К а к о й к о д с т а й л ) )"
      Ответить
      • { В ы   с л у ч а й н о   н е   M i d d l e   C ? }
        Ответить
        • у меня так двубайтовый уникод отображается иногда, если клиент не осилил БОМ или просто тупой
          Ответить
    • Маяковский какой-то.
      Ответить
    • 10E+4 не осилит?
      Ответить
      • Почему? А, ты про то что оно E вообще не умеет. Ну видимо нинужно.
        Ответить
        • хм

          ну осилит в том смысле, что вернёт ерунду)
          Ответить
        • -  48.0


          я вот этого не понял
          Ответить
          • Таблицу Аски загугли (45 и 46 - минус и точка скорее всего по смыслу кода, 48 - точно '0').
            Ответить
            • не, минус и точка то понятно
              это два ифа в 5-ой и 14-ой строчках

              он от числа на каждом шаге отнимает 48
              Ответить
              • Ну '1' - '0' == 1, чтобы код символа сконвертить в цифру.
                Ответить
                • а, туплю, действительно

                  там оно ещё просто во флоате, потому сразу не въедешь
                  Ответить
          • 48 — код цифры ноль (0x30).
            Ответить
    • Переведи на "PHP".
      Ответить

    Добавить комментарий