2013-01-04 3 views
2

내가 아는 한, C#, VB, Java 및 JavaScript의 부울 변수의 기본값은 false (또는 "false와 비슷한 동작"은 JavaScript의 경우보다 정확합니다.)이며 확실합니다. 이것이 다른 경우의 많은 다른 언어들이다.부울 변수의 기본값이 false 인 이유는 무엇입니까?

이유가 궁금합니다. 언어 디자이너가 기본 언어로 false을 선택하는 이유는 무엇입니까? 숫자 값에 대해서는 0이 논리적 인 선택임을 알 수 있지만 은 true 이상의 자연 상태입니다.

제쳐두고 기본값이 true 인 언어가 있습니까?

+1

당신은 "부울의 기본값은 거짓입니다"라는 관찰을 근거로 무엇을하고 있습니까? – deceze

+0

내 경험 외에도 C#의 기본값 참조 : http://msdn.microsoft.com/en-us/library/83fhsxwc.aspx; Java의 기본값 : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 등 – batwad

답변

1

의미 론적 관점에서, 부울 값은 조건 또는 상태를 나타냅니다. 대부분의 언어는 초기화되지 않은 경우 조건이 충족되지 않았다고 가정합니다 (또는 상태가 비어 있거나 무엇이든). 그것은 깃발 역할을합니다. 다른 방법으로 생각 해보세요. 부울 값의 기본값이 true이면 해당 언어의 의미에 따라 처음에는 조건이 만족 스럽다는 것을 알 수 있습니다. 이는 비논리적입니다.

실용적인 관점에서 프로그래밍 언어는 부울 값을 비트 (0은 거짓, 1은 참)로 내부적으로 저장하기 때문에이 경우 숫자 유형과 동일한 규칙이 부울에 적용됩니다.

부울 인스턴스 변수에 대한 Java의 기본값은 항상 false이지만 로컬 변수에는 적용되지 않으므로 초기화해야합니다.

+1

나는 그것이 비논리적이라는 점에 동의하지 않습니다. 초기에 만족되는 많은 조건을 생각할 수 있습니다 (예 : 나는 살아 있습니까?) 그리고 모든 조건이 처음 충족 될 수있는 세계를 만들기 위해 변수를 바꾸기 만하면됩니다 (예 : 'HasBeenInitialised'vs. 'NeedsToBeInitialised').). 0/1 내부 저장 장치에 대한 귀하의 요점을 이해합니다. – batwad

+0

그래, 네가 맞아! 처음에는 완벽하다고 느끼기에 가능한 많은 조건이 있습니다. – Augusto

+0

프로그래밍 할 때가 아닙니다. 존재하지 않을 때까지는 존재하지 않습니다. – DaveC426913

관련 문제