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

    +145

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    unsigned int userID;
    ...
    userID = -1;
    ...
    if( userID < 0 )

    Запостил: bred, 02 Июня 2011

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

    • показать все, что скрытоГде здесь C++, jQuery?!
      Ответить
    • По вытянутым кистям рук, линейкой...логарифмической.
      Ответить
      • Ну уже если в многоточие не спрятали цикл, в теле которого userID изменяется, то можно и штангенциркуль куда-нибудь ему повесить.
        Ответить
      • код расчитывающий на реализацию "ПЛОХАЯ ПРАКТИКА"
        инициализация беззнакового очень большим положительным целым
        не представимым битами целевого операнда хорошо определена
        target32 = big_val64 - (max_target32 + 1) - (max_target32 + 1) - (max_target32 + 1) ...
        инициализация беззнакового отрицательным определяется
        реализацией в зависимости от представления отрицательных
        в памяти которое может быть "знак величина" "дополнение до единицы"
        "дополнение до двух"
        unsigned int userID;
        ...
        userID = -1;
        результат для 32 битных целых при кодировании отрицательных
        при знак велитчина
        2147483649
        при дополнении до единицы
        4294967294
        при дополнении до двух
        4294967295
        Ответить
    • Стандартный факап, не считается. ;)
      Ответить
    • аффтар варнинги компилятора не читает?
      Ответить
      • какой компилер? что пишет? вот если бы было сравнение со знаковой переменной - другое дело.
        Ответить
      • аффтар не знает, как переводится unsigned
        Ответить
      • $ cat test.c 
        int main()
        {
        	unsigned int i;
        	i = -1;
        	if(i < 0) return 1;
        	return 0;
        }
        $ gcc -Wall test.c
        $ gcc --version
        gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
        ... 
        $ ./a.out 
        $ echo $?
        0
        Ответить
        • что и требовалось доказать.
          Ответить
        • Лузер. Варнинги надо все включать:
          $ gcc -Wall -Wextra test.c
          test.c:5:2: предупреждение: результат сравнения `беззнаковое выражение < 0' всегда ложь
          Ответить
    • мля, накрутка!
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить

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