내 프로그램은 프로그램이 시작될 때 여러 개의 부동 소수점을 기본 숫자로 설정해야합니다. 프로그램이 실행되면 이러한 정수가 실제 값으로 설정됩니다. 그러나 이러한 실제 값은 실제 숫자이 될 수 있습니다. 내 프로그램은이 값을 기본값에서 변경되었는지 지속적으로 확인합니다.정수의 기본값은 무엇입니까?
예를 들어 정수 A, B, C가 있다고 가정합니다. 이 모든 정수는 시작시 기본값으로 설정됩니다 (-1이라고 말하면 됨). 그런 다음 프로그램이 진행되면 A와 B가 정중하게 3과 2로 설정됩니다. C가 여전히 기본값에 있기 때문에 프로그램은 C가 기본값이 아닌 값으로 지정되지 않았다고 결론을 내릴 수 있습니다.
고유 한 기본값을 찾으려고 할 때 문제가 발생합니다. 숫자의 값은 무엇이든 설정할 수 있기 때문에 설정 한 값이 기본값과 동일하면 내 프로그램은 부동 소수점이 여전히 기본값을 가지고 있는지 또는 참값이 기본값과 똑같은지 알 수 없습니다 .
NULL을 기본값으로 간주하지만 NULL은 C++에서 0과 같으므로 같은 문제가 발생합니다!
bool과 float로 구성된 전체 객체를 멤버로 만들 수 있습니다. 여기서 bool은 float에 자체 값이 할당되었는지 여부를 나타냅니다. 그러나 이것은 잔인한 것처럼 보입니다. 기본값이 있습니까? 값이 다른 값과 동일하지 않도록 플로트를 설정할 수 있습니까? (예 : 무한대 또는 i 포함)
C/C++ 솔루션을 요청하고 있습니다.
C는 값이 할당되었는지 여부를 결정하는 기능을 본질적으로 지원하지 않습니다. 하나의 전략은 해시 맵 (변수 이름에서 할당 된 값으로)을 만드는 것이고, 변수 이름이 해시 맵에 존재하지 않으면 할당되지 않은 것입니다. –
* 무한대 또는 i *는 정수가 아닙니다. 부동 소수점 숫자를 다루는 경우 Not-a-Number (nan)를 사용할 수 있지만 정수에는 그러한 값이 없습니다. boost :: optional을 사용할 수 있습니다 (구현은 부울과 정수의 조합과 비슷해야합니다 ... 또는 자신 만의 롤을 만들지 만 도메인에 하나가 없으면 * 잘못된 정수는 없습니다. 도메인 -12345 불가능합니다 ...) –
마지막에 float 언급합니다 .C++에서 표준, 난 :: numeric_limits :: NaN(), 표식으로 사용할 수 있습니다. 그러나 정수에 대한 표식 값이 없습니다 –