Как стать автором
Обновить
5
0

Программист-Патологоанатом

Отправить сообщение

Смущает унарный минус с uintptr’ом, альтернативы страшнее, зато явно показывают, что тут bit trick.

Если более серьезно.

Сравнение значений с плавающей точкой на равенство -- это побитовое сравнение, практически memcmp, т.е. реально низкоуровневая операция, происходящая либо на абстрактной машине, либо уровнем ниже на конкретном железе. Оптимизация тут может быть неуместной.

Если компилятор генерит код, сравнивающий объекты с разным двоичным представлением, то с моей точки зрения это все-таки баг компилятора. Я не знакток x87, в нем сравнения только регистр-регистр или есть и регистр-память?

Использование volatile для точечного подавления нежелательной оптимизации выглядит как элегантный трюк.

Обычное дело в низкоуровневом коде, напрямую с железом и не такие чудеса случаются(

И так, и эдак выход за границу массива, нет?

Может быть сведено к двум принципам Цермело для выступающих:

  1. Не бойтесь недооценить аудиторию, опасайтесь ее переоценить.

  2. Не уделяйте много внимания важному, напирайте на очевидное...

В старой сишке обходились записью type(val) для преобразования типов

Серьезно?

Пустой какой-то спор, оба правы. Строго говоря, и ссылки и указатели в C++ называют ссылочными типами, если верить Wikipedia. :)

На мой вкус, это не совсем верно и, когда-то давно, когда учился в 90-х, их вроде по-русски даже называли косвенными типами. Хотя и это неверно.

Подытоживая: думайте, что хотите, но и в C, и в C++ адрес памяти -- совершенно законный целочисленный тип данных. У указателя может быть свой адрес, не связанный с адресуемым объектом. Не все то, что можно вытворить с указателем, можно делать с ссылкой, хотя они могут быть равны побитово. А ссылка -- указатель с дополнительными ограничениями и сахаром. Можно называть ссылки ссылочными типами, можно иначе, но это не добавляет ничего нового и не несет никакой пользы. Поэтому остаюсь при своем мнении.

Не соглашусь с Вами

Сколько угодно, терминологические битвы неинтересны. Ссылочный тип -- устоявшийся термин, появившийся, если не ошибаюсь, в языках со сборкой мусора (вроде Java) для типов, экземпляры которых создаются исключительно в куче и доступных только через handle-ссылку.

В C++ ссылки -- это ограниченный в использовании указатель, не более, но и не менее. Называть какие-либо ссылки "ссылочными типами" -- вводить неискушенного читателя в заблуждение. Студпэр с двумя ссылками внутри -- это студпэр с двумя полями-указателями, просто язык затрудняет передачу в них nullptr. Но не запрещает. Как-то так, на скорую руку, не судите строго, могу напортачить, но идея должна быть ясна:

//...
std::pair<int&, int&> p;
{
 int a = 15;
 int b = 4;
 p = std::pair<int&, int&>{a, b};
 // а тут копируются инты? Думаю, адреса интов...
 ...
 }
 // что?!!!

Кстати, я, лично, полагаю, что в C++ нужны ссылочные типы: синтаксический сахар для создания "запимпленных" классов, экземпляр такого класса и будет служить handl'ом для неявного и доступного только в одной единице компиляции "внутреннего" типа.

Только мне кажется, что называть C++ ссылки во всех их ипостасях "ссылочными типами" -- по меньшей мере, преувеличение?

Ссылочный тип -- это тип доступный исключительно по ссылке, а не ограничение на использование обычного типа. Что-то похожее на ссылочные типы в плюсах -- это а)известные со времен C указатели на непрозрачные стуркутры и б)непрозрачные структуры/классы, завернутые в умные указатели и в)классы с PIMPL. Стрелочка вместо точки -- синтаксическая мелочь, которая ничего не меняет. В случае в) стрелочка и неособо нужна...

Главная причина -- интерфейс к развесистым C/C++ библиотекам.

Ось така..?

медики по судам затаскают

Скорее уж пациенты...

Не знаток go. В коде везде знаковые целые и сдвиг на знаковое целое. В go с этим не бывает проблем? В C лучше для этого использовать беззнаковые типы.

Они разогнали команду модераторов-поборников CoC.

Кстати, toolchain файл можно смело инклюдить в CMakeList.txt, если до project. А другие переменные, чтобы не заморачиваться со скриптами и -D -- можно записать во вспомогательный скрипт .cmake в папку cmake -- и тоже заинклюдить в головной CMakeList.

Про "большие армы" не скажу, но на CortexM вроде можно ценой некоторой недетерминированности сделать CAS.

Но кишечная палочка — модельный организм для исследования грамположительных бактерий.

Правда что ли?!

каждое повышение исторической температуры тела на 1 °C

Прям точно на целый градус?! Не меньше?

Аллергии на глюконат кальция не бывает, может быть только идеосинкразия. Увы, часы бьют 13-й раз...

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность