왜 "함수를 호출하지 않고 함수를 출력합니까(f()가 아니라 f;). 항상 1을 인쇄합니까?"
여기서 코드에서는 괄호를 사용하지 않고 pr이라는 함수를 "호출"하려고 시도합니다. 그러나 이것은 실제로 함수를 호출하는 것이 아닙니다. 대신, 함수 포인터를 cout 함수에 전달합니다. 함수 포인터가 암시적으로 bool 값으로 변환되면 true로 평가됩니다. true는 C의 1과 동일하므로 출력은 항상 1입니다.
명확하게 설명하자면 제공된 코드의 다음 줄은 pr 함수를 호출하지 않습니다.
pr;
cout pr 함수를 실제로 호출하려면 pr()과 같은 괄호를 사용해야 합니다.
이것은 이러한 동작은 함수 포인터가 암묵적으로 bool로 변환될 수 있다는 사실에서 비롯됩니다. C 11에서는 보다 유용한 출력을 제공하기 위해 함수 포인터에 대해 연산자
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3