Использование оператора

#c

#c

Вопрос:

Привет, я наткнулся на эту строку кода, написанную на c:

 uint64_t rsp = (uint64_t) amp; (base);
  

где base также является переменной типа uint64_t.

Каково влияние оператора AND между переменной и типом данных?

Комментарии:

1. (uint64_t) здесь используется оператор приведения к типу, а не операнд; и amp; является оператором унарного адреса. (uint64_t) amp; (base) анализируется как (uint64_t)(amp;base) . Он принимает адрес base и преобразует его в uint64_t .

2. amp; в данном контексте это не битовый оператор. Это оператор «адрес». Эта строка кода неверно отформатирована.

3. Спасибо! Я понятия не имел, что amp; предназначалось для использования в качестве оператора адреса.

Ответ №1:

Я думаю, что способ форматирования этой строки добавляет путаницы. В коде C обычно не пишется пробел между унарным оператором ( amp; ) и его операндом ( base ). Также ( ) around base не являются избыточными.

Это более понятно:

 uint64_t rsp = (uint64_t)amp;base;
  

amp;base принимает адрес base и (uint64_t) является приведением.