C++ 函数指针的计算结果为 1
c++ function pointer evaluates to 1
我定义了一个指向函数的简单函数指针,当我尝试输出它时,它的计算结果为 1。幕后发生了什么?(我在Mac上,使用c ++ 11 g ++编译器编译(
#include <iostream>
int foo()
{
return 5;
}
int main(int argc, char const *argv[])
{
int (*fcptr)() = foo;
std::cout<< fcptr;
return 0;
}
输出为 1。
没有需要std::ostream
和函数指针的operator<<
重载。但是,有一个需要std::ostream
和一个bool
,并且存在从函数指针到布尔值的隐式转换。
所以你的代码将函数指针转换为bool
,如果它不是空指针,则定义为产生true
;然后输出true
,默认情况下定义为输出1
。 您可以执行std::cout<< std::boolalpha << fcptr;
以查看输出true
。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 计算幂级数的数学结果不正确
- 当我的 if 条件计算结果为 false 时,我的 else 块将不会执行
- 为什么组合的上限和下限比较的计算结果总是为 true?
- 为什么'typeid(x) == typeid(y)'的计算结果为 true,其中 'x' 和 'y' 分别是 T 和 T& 类型的 id-表达式?
- 在Javascript和C++中计算MD5哈希的不同结果
- 为什么 Lisp 中 1000 阶乘的计算如此之快(并显示正确的结果)?
- 我们如何并行运行算法的 n 个实例并以有效的方式计算结果函数的平均值?
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- WebGL2 和 C++ 上的浮点计算结果不同
- 术语的计算结果不是采用0个参数的函数
- C++编译器能在编译时计算出文字的除法结果吗
- 错误 C2064:术语的计算结果不是采用 3 个参数的函数
- 在C++中,是否可以编写一个条件的lambda,即只是一个计算结果为真或假的条件
- C++ 函数指针的计算结果为 1
- 为什么 02000 的计算结果为 1024
- 为什么这两个相似的代码计算行列式的结果不同?
- C++ openmp 并行计算计算错误的结果
- 如何让编译器忽略这个计算结果为 false 的 if-constexpr?
- 从文本文件中读取并使用 sizeof 结果计算整数的数量到 nan