Функции печати в 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
}