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

    −97

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    int res;
    
    res = ioctl(...);
    
    /* Is value negative? */
    if(res & 0x8000){
        res = ((~res) & 0xffff) + 0x1;
        printf("%-32s: -%d mA\n", "Average Current", res);
    }
    else
        printf("%-32s: %d mA\n", "Average Current", res);

    железячник против signed short: шорты победили.

    Запостил: Dummy00001, 01 Сентября 2015

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

    • Он слишком долго работал с процессорами, на которых нет минуса?
      Ответить
      • минус?

        тут просто число в шорт сконвертить надо, что бы sign extension произошёл.
        Ответить
      • Он слишком долго работал с 16-битными процессорами...
        Ответить

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