초기화되지 않은 지역 변수의 값과 컴파일러/커널

jeff_an의 이미지

제목을 어떻게 작성해야될지 몰라 임의로 작성하였습니다.

생활코딩 페이스북 그룹에서 "초기화되지 않은 지역 변수의 값과 컴파일러/커널 개입"에 대한 토론이 있었습니다.
이곳에 제가 추가적으로 내용을 작성하게되면 자칫 이상하게 변질될 가능성이 있어 해당 글타래에 대한 링크만 남기도록 하겠습니다. 죄송합니다.
해당 글타래 뿐만아니라 답글에도 다른분들이 토론을 하면서 뭔가 석연치 않은 점이나 이해가 안되는 부분들을 작성하여 두었습니다.
읽어보시고 여러가지 정보나 의견 부탁드리겠습니다.

링크 : https://www.facebook.com/groups/codingeverybody/permalink/1534124383294759/

해당 글타래는 로그인없이 읽기가 가능합니다.

감사합니다.

김정균의 이미지

로그인 없이 안보이는데요 :-(

jeff_an의 이미지

방금 로그아웃하고 크롬에서 확인해봤는데 저는 잘 나옵니다. 이상하네요.. oO;;

세벌의 이미지

로그인 안 하면 안 보입니다.

김정균의 이미지

지금은 잘 보이는 군요 :-)

shint의 이미지

리턴값. 인자값. 오류값.에 대한 설명이 나옵니다.
http://www.cplusplus.com/reference/cstdio/scanf/
http://itguru.tistory.com/36

윈도우10 64비트에서 테스트한 결과입니다.
Visual Studio 2017 RC 와 DevC++ 에서 해보니. 0을 입력하면. 0이 나옵니다.
리턴값은 갯수가 나옵니다. 1이 나옵니다.
DevC++에서 fac 은 64비트로 컴파일시 0이 나오고. 32비트로 컴파일시 37이 나옵니다.
Visual Studio 2017 RC 에서 fac 은 x86 x64 로 컴파일시 모두. Run-Time Check Failure #3 - The variable 'fac' is being used without being initialized. 오류가 발생합니다.

페이스북에서의 대화내용은 잘 이해가 가지 않네요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

qiiiiiiiip의 이미지

쓰레기값인데 왜 consistent하게 1이 나왔는지에 대한 논란인것 같네요.
random이 없는 프로그램에서 수행할때마다 다른 결과가 나오는게 더 신기한일이겠습니다.
fac이 출력되는데 이용된 메모리(또는 레지스터)에 왜 하필이면 1이 저장되게 되는지는
그 실행파일의 어셈코드를 봐야겠습니다만..

scanf의 리턴값이라는데 50원 걸겠습니다.