Size: a a a

cxx.Дискуссионная

2020 June 05

E

Eugene in cxx.Дискуссионная
Андрей
уб оно делает
Чо, это почему ещё?
источник

E

Eugene in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Переводит бинарное число из строки в инт
Не просто в инт, а в десятичный инт к тому же. Перевод системы счисления, короче
источник

E

Eugene in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
cnt можно в капче инитить. Или на курсе 11 плюсы?
Не, я просто не оче так люблю писать
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Чо, это почему ещё?
Например char быстро переполнится
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Не просто в инт, а в десятичный инт к тому же. Перевод системы счисления, короче
int не имеет системы счисления
источник

VS

Vladimir Suisei in cxx.Дискуссионная
Mr.Mait
Откопал на работе подобный код на С. Расположение операторов по фану. Как думаете, хороший тон или нет?) Я про -->

int sum(int *ptr, int length)
{
   const int* p = ptr;
   int sum = 0;
   while (length --> 0)
   {
       sum += *p++;
   }
   return  sum;
}
Рофл для будущих разработчиков, если 1 раз то почему бы и нет
Можно еще инкрементить через i-=-1
источник

E

Eugene in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
int не имеет системы счисления
Ага, int = 0x0101.
Как тебе такое??
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Ага, int = 0x0101.
Как тебе такое??
И что?
источник

BB

Bohdan Bessonov in cxx.Дискуссионная
Eugene
Ага, int = 0x0101.
Как тебе такое??
Это инициализация инта шестнадцатеричным литералом. Сам инт от этого шестнадцатеричным не становится
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Число и строковое представление числа это две разные вещи
источник

E

Eugene in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Например char быстро переполнится
Ну и нифига это не уб. У переполнения вполне определенное поведение на любой системе.
источник

E

Eugene in cxx.Дискуссионная
Bohdan Bessonov
Это инициализация инта шестнадцатеричным литералом. Сам инт от этого шестнадцатеричным не становится
Ясен фиг. Я о том, что мы сами придумываем интерпретацию инта
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Ну и нифига это не уб. У переполнения вполне определенное поведение на любой системе.
Для чара не определено, даже если он беззнак на таргет платформе, даже в последнем стандарте
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Ну и нифига это не уб. У переполнения вполне определенное поведение на любой системе.
В ассемблере да, в си нет
источник

E

Eugene in cxx.Дискуссионная
Char == int8_t
источник

E

Eugene in cxx.Дискуссионная
Короче, завязывайте везде UB искать, это паранойя уже какая-то
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Char == int8_t
Нихуя
источник

VS

Vladimir Suisei in cxx.Дискуссионная
Eugene
Короче, завязывайте везде UB искать, это паранойя уже какая-то
Overflows

Unsigned integer arithmetic is always performed modulo 2n
where n is the number of bits in that particular integer. E.g. for unsigned int, adding one to UINT_MAX gives ​0​, and subtracting one from ​0​ gives UINT_MAX.

When signed integer arithmetic operation overflows (the result does not fit in the result type), the behavior is undefined: it may wrap around according to the rules of the representation (typically 2's complement), it may trap on some platforms or due to compiler options (e.g. -ftrapv in GCC and Clang), or may be completely optimized out by the compiler.

Ну короче уб только для знаковых
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Eugene
Короче, завязывайте везде UB искать, это паранойя уже какая-то
ub может делать код некорректным. Кому нужен некорректный код?
источник

BB

Bohdan Bessonov in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
ub может делать код некорректным. Кому нужен некорректный код?
любителям оптимизаций-через-UB  :)
источник