what's the total number of "н"s in:
q: преобразование типов(разница) в чем заключается разница в использовании тип_данных(выражение) и (тип_данных)выражение? 

a: единственная разница между тип(выражение) и (тип)выражение в том, что первом случае имя типа должно быть одним словом, иначе произойдет ошибка компиляции.
если оба варианта компилируются, то они полностью эквивалентны.
пример:
auto a = int(1);       // ✓
auto b = int*(1);      // ошибка
auto c = const int(1); // ошибка
auto d = long int(1);  // ошибка

auto e = (int)1;       // ✓
auto f = (int*)1;      // ✓
auto g = (const int)1; // ✓
auto h = (long int)1;  // ✓

есть еще (тип)(выражение) - это по сути (тип)выражение, но со скобками, добавленными к выражению. между этими двумя вариантами разницы нет совсем (не считая случаев, когда скобки влияют на приоритет операций).


в чем заключается разница в использовании int(выражение) и (int)выражение?

так как int - это одно слово, для него разницы нет.

p.s. тип(выражение) не работает в с.

a: (double)100 - это преобразование типа (cast conversion) в стандарте c. плюсы такой способ поддерживает.
double(100) - стиль плюсов, это вызывает конструктор с преобразованием. делает то-же самое, называется по разному.
double{100} - в с++11 всё то-же, но следит чтобы не было уменьшения точности.

a: конструкция вида (тип) выражение называется c-style cast (cast notation) и служит для преобразования типов в языке с.
конструкция вида тип(выражение) называется functional cast (functional notation) и было добавлено в с++. такой синтаксис был полезен в ситуациях, когда получаемый объект не представлял собой значение в него переданное, например connection("url_string") (чего не могло быть в с). существенным моментом является то, что 


*

*тип не может быть составным, т.е. запись long int(1) невалидна

*выражение является опциональным, в таком случае выполняется direct-initialization
разницы в использовании этих конструкций в с++ больше нет, так как для всех сценариев их использования появились альтернативные средства, позволяющие строже соблюдать типобезопасноть, избегать потери данных и точнее выражать намерения. для преобразования типов служат static_cast, reinterpret_cast, const_cast, и разные специальные функции, такие как ::std::as_const. для инициализации следует использовать синтаксис list initialization либо встроенные и пользовательские литералы.

user
The total number of "н"s in that passage is 107.
assistant