/fpcvt (부동 소수점에서 정수로 변환 호환성)

컴파일러가 부동 소수점 변환을 정수 형식으로 처리하는 방법을 지정합니다.

구문

/fpcvt:IA
/fpcvt:BC

인수

/fpcvt:IA

/fpcvt:IA 옵션은 결과가 Intel AVX-512 변환 지침과 호환되도록 부동 소수점 값을 정수로 변환하도록 컴파일러에 지시합니다. 이 동작은 x86 대상에 대한 Visual Studio 2019의 일반적인 동작입니다.

/fpcvt:BC

/fpcvt:BC 옵션은 결과가 Visual Studio 2017 및 이전 컴파일러와 호환되도록 부동 소수점 값을 부동 소수점 값을 부호 없는 정수로 변환하도록 컴파일러에 지시합니다. 이 동작은 Visual Studio 2022의 기본값입니다.

설명

Visual Studio 2019 버전 16.8 이상 버전 /fpcvt 에서는 컴파일러 옵션을 사용하여 부동 소수점에서 정수 변환의 결과를 제어할 수 있습니다. 이 /fpcvt:BC 옵션은 Visual Studio 2017 및 이전 버전의 동작과 동일한 Visual Studio 2022의 기본 동작을 지정합니다. 이 /fpcvt:IA 옵션은 IA(Intel Architecture) AVX-512 변환 명령 동작과 호환되는 동작을 지정합니다. 이 옵션은 32비트 x86 또는 64비트 x64 대상과 함께 사용할 수 있으며 지정 여부에 /arch:AVX512 관계없이 적용됩니다.

Visual Studio 2019의 경우 지정하지 않는 한 /arch:AVX512 x64 대상의 기본 동작은 일치 /fpcvt:BC 합니다. 일반적으로 x86 대상의 동작은 아래/arch:IA32/arch:SSE를 제외하고 일치/fpcvt:IA하거나 함수 호출 결과가 부호 없는 정수로 직접 변환되는 경우가 있습니다. 재정의를 사용하면 기본값이 재정의 /fpcvt 되므로 모든 변환이 두 대상에서 일관되게 처리됩니다. ARM 및 ARM64 대상에 대한 변환 동작이 둘 중 하나 /fpcvt:BC 또는 /fpcvt:IA.와 일치하지 않습니다.

표준 C++는 잘린 부동 소수점 값이 정수 형식으로 정확하게 표현될 수 있는 경우 해당 형식으로 변환할 때 해당 값이 있어야 한다고 지정합니다. 그렇지 않으면 모든 동작이 허용됩니다. 두 옵션 모두 /fpcvt 표준 C++를 준수합니다. 유일한 차이점은 잘못된 원본 값에 대해 반환되는 값입니다.

/fpcvt:IA 옵션을 사용하면 잘못된 변환이 0에서 가장 먼 대상 값인 단일 sentinel 값을 반환합니다. 서명된 형식으로 변환하는 경우 sentinel은 해당 형식의 최소값입니다. 서명되지 않은 형식은 최대값을 사용합니다. 부동 소수점 연산은 잘못된 작업을 나타내기 위해 NaN(Not-a-Number) 값을 반환할 수 있습니다. 해당 지표는 NaN 값이 없는 정수 형식으로 변환하기 위한 옵션이 아닙니다. sentinel은 유효한 변환의 결과일 수도 있지만 NaN 값의 프록시로 사용됩니다.

또한 이 /fpcvt:BC 옵션은 소스가 유효하지 않은 경우 서명된 형식으로 변환하면 가능한 최소값을 반환합니다. 그러나 부호 없는 정수 형식으로의 변환은 .로의 변환을 기반으로 합니다 long long. 값을 변환하려면 unsigned int컴파일러가 먼저 값을 형식 long long으로 변환합니다. 그런 다음 컴파일러는 결과를 32비트로 자립니다. 값을 변환하려면 unsigned long long너무 높은 long long 유효한 원본 값이 특수한 경우로 처리됩니다. 다른 모든 값은 먼저 변환된 long long 다음 다시 캐스팅됩니다 unsigned long long.

옵션은 /fpcvt Visual Studio 2019 버전 16.8의 새로운 기능입니다. 명령줄에서 두 /fpcvt 개 이상의 옵션을 지정하면 이후 옵션이 우선적으로 적용되고 컴파일러가 경고를 생성합니다.

변환을 위한 내장 함수

전역적으로 적용되는 옵션과 독립적으로 특정 변환의 /fpcvt 동작을 지정할 수 있습니다. 컴파일러는 와 호환 /fpcvt:IA되는 변환을 위한 내장 sentinel 변환 함수를 제공합니다. 자세한 내용은 Sentinel 변환 함수를 참조 하세요. 또한 컴파일러는 ARM 또는 ARM64 대상 아키텍처의 변환과 호환되는 채도 변환 함수를 제공합니다. 자세한 내용은 채도 변환 함수를 참조 하세요.

컴파일러는 유효한 변환을 위해 가능한 한 빨리 실행되는 내장 변환 함수도 지원합니다. 이러한 함수는 값을 생성하거나 잘못된 변환에 대한 예외를 throw할 수 있습니다. 결과는 대상 플랫폼, 컴파일러 옵션 및 컨텍스트에 따라 달라집니다. 이미 범위가 검사 값이나 잘못된 변환을 유발할 수 없는 방식으로 생성된 값을 처리하는 데 유용합니다. 자세한 내용은 빠른 변환 함수를 참조 하세요.

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 /fpcvt:IA 하거나 /fpcvt:BC추가할 추가 옵션 속성을 수정합니다. 확인을 선택하여 변경 내용을 저장합니다.

프로그래밍 방식으로 이 컴파일러 옵션을 설정하려면

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
빠른 변환 함수
채도 변환 함수
Sentinel 변환 함수