«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему печать имени функции в C++ приводит к результату «1»?

Почему печать имени функции в C++ приводит к результату «1»?

Опубликовано 8 ноября 2024 г.
Просматривать:251

Why Does Printing a Function Name in C   Result in \

вычисление функции без вызова: разгадка тайны

Представьте себе: вы пишете код и вместо вызова функции с круглыми скобками вы просто печатаете его имя. Удивительно, но результат всегда равен 1. Такой нестандартный подход оставляет вас в недоумении, как по поводу единиц, так и по поводу отсутствия указателя на ожидаемую функцию.

Давайте углубимся в тонкости вашего кода:

#include 
using namespace std;

void pr()
{
    cout 

Вопреки вашему намерению, вы на самом деле не вызываете функцию pr в операторах cout

Чтобы лучше понять, рассмотрите возможность использования cout

В то время как C 11 предлагает элегантное решение:

template 
std::ostream & operator

Эта перегрузка позволяет печатать указатели на функции произвольной арности, отображая такую ​​информацию, как адрес указателя функции и количество ее аргументов.

Итак, вот и все: загадочные единицы — это не простое совпадение, а результат неявного преобразования типов. Понимание этого поведения имеет решающее значение для предотвращения неожиданных результатов и создания более надежного кода.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3