재미있는건 선언한 후 바로 출력한 다음 scanf가 있으면 i = 예측 불가능 숫자, j = 32767, k =0으로 출력됨. scanf구문이 없으면 i = 0, j =0, k = 0으로 출력됨. 소스에 scanf가 있는지 없는지에 따라 i,j,k가 초기화되는 게 달라짐 ㄷㄷ. 컴파일 하는 데 있어서 뭔가 일어나는 걸까?
익명(124.51)2019-05-13 05:05
UB는 undefined behavior, 정의되지 않은 동작, 뭔 일이 터질지 모르는 걸 의미하는 거임. scanf를 오용하는 시점에서 프로그램이 크래시가 터지든가 rm -rf를 시전해도 대꾸를 못 한다는 거임. 변수만 바뀌고 끝났으니 상식적이고 다행아닌가. 그 UB가 왜 일어나는지 조사하고 싶은 거면, 개인적으로 하는 게 빠를 듯.
셋다 선언만하고 바로 출력하면 0 0 0 으로 나옴
재미있는건 선언한 후 바로 출력한 다음 scanf가 있으면 i = 예측 불가능 숫자, j = 32767, k =0으로 출력됨. scanf구문이 없으면 i = 0, j =0, k = 0으로 출력됨. 소스에 scanf가 있는지 없는지에 따라 i,j,k가 초기화되는 게 달라짐 ㄷㄷ. 컴파일 하는 데 있어서 뭔가 일어나는 걸까?
UB는 undefined behavior, 정의되지 않은 동작, 뭔 일이 터질지 모르는 걸 의미하는 거임. scanf를 오용하는 시점에서 프로그램이 크래시가 터지든가 rm -rf를 시전해도 대꾸를 못 한다는 거임. 변수만 바뀌고 끝났으니 상식적이고 다행아닌가. 그 UB가 왜 일어나는지 조사하고 싶은 거면, 개인적으로 하는 게 빠를 듯.
이런거 조사는 어떻게 하는 거야?
glibc 구현을 봐야할거같은데 귀찮다
glibc하고 관련이 있는거야?