>  기사  >  백엔드 개발  >  C에서 초기화되지 않은 지역 변수가 0을 인쇄하는 이유는 무엇입니까?

C에서 초기화되지 않은 지역 변수가 0을 인쇄하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-11 09:08:031005검색

Why Does an Uninitialized Local Variable in C   Print 0?

기본값: 두 변수 이야기

C에서 초기화되지 않은 변수는 수수께끼를 야기합니다. 일반적인 통념에 따르면 그러한 변수는 쓰레기 값을 보유해야 합니다. 그러나 당황스러운 시나리오에서 다음 코드는 0을 출력합니다.

int main()
{
    int a;
    cout << a;
    return 0;
}

이 코드가 예기치 않게 동작하는 이유는 무엇입니까?

이 설명은 지역 변수와 비지역 변수의 뚜렷한 동작에 있습니다. 주어진 코드에서 "a"와 같은 지역 변수의 경우 C는 기본적으로 불확실한 값을 할당합니다. 초기화 없이 이러한 값을 사용하면 정의되지 않은 동작이 트리거되며 그 결과는 무해한 것부터 치명적인 것까지 다양합니다.

또는 스레드 로컬 변수를 포함한 비로컬 변수는 전역 변수로부터 0 초기화를 상속합니다. 그러나 제공된 예에서 "a"는 로컬 변수이며 이 초기화의 대상이 아닙니다.

함정을 피하기 위해 프로그래머는 모든 변수를 명시적으로 초기화하는 것이 좋습니다. 전역 변수는 특정 틈새 애플리케이션에서 때때로 정당화되지만 정의되지 않은 동작이 발생할 가능성이 있으므로 주의해서 접근해야 합니다.

위 내용은 C에서 초기화되지 않은 지역 변수가 0을 인쇄하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.