printf()에서 Float 인수를 Double로 승격
이전 논의에서 float가 printf에 전달될 때 (), 함수에서 사용되기 전에 double로 승격됩니다. 이 동작은 printf()에만 국한된 것이 아니라 모든 가변 함수에 해당됩니다.
프로토타입 선언이 없으면 C 및 C의 모든 인수 승격은 K&R C 표준에 정의된 대로 발생합니다. 여기에는 바람직하지 않은 경우에도 float 인수를 double로 승격시키는 것이 포함됩니다.
가변 함수 인수 승격
C99 표준(섹션 6.5.2.2)에 따르면 인수는 float 유형은 가변 함수에 전달되기 전에 double로 승격됩니다. 마찬가지로 C 표준(섹션 5.2.2)에서는 부동 소수점 인수가 함수 호출 전에 승격된 유형(double)으로 변환된다고 명시합니다.
cppreference는 C의 가변 함수에 대한 기본 변환에 대한 명확한 개요를 제공합니다. , float 인수를 double로 변환하는 것을 포함합니다.
K&R C와의 호환성
가변 함수에서 float 인수를 double로 승격하는 것은 호환성을 위해 C와 C에서 유지되었습니다. 원래 K&R C 표준을 사용합니다. 데이터 손실 가능성에 대한 우려에도 불구하고 이전 버전과의 호환성을 위해 이 변환은 그대로 유지됩니다.
위 내용은 printf() 및 기타 Variadic 함수에서 Float 인수가 Double로 승격되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!