Функции печати в cpp [дубликат]

Oct 25 2020

Почему каждый раз, когда я печатаю функцию в cpp, она печатает 1. т.е.

#include <iostream>
using namespace std;
void f1(){
   cout<<"called function f";
}
int f2(){
   cout<<"called f2";
   return 1;
}
int main(){
   cout << f2 <<endl; // prints 1
   cout << f1 <<endl; // still prints 1
}

Мне просто интересно, почему он печатает 1.

Спасибо за вашу помощь

Ответы

1 MikeCAT Oct 25 2020 at 20:20

Кажется, он оценивает, не являются ли функции (преобразованные в указатели на функции) нулевыми, возвращая trueи выводя на печать trueкак 1. Это можно подтвердить, добавив cout << std::boolalpha;и увидев, что результат изменен на true.

#include <iostream>
using namespace std;
void f1(){
   cout<<"called function f";
}
int f2(){
   cout<<"called f2";
   return 1;
}
int main(){
   cout << std::boolalpha;
   cout << f2 <<endl; // prints true
   cout << f1 <<endl; // also prints true
}