adfsfsf   5년 전

위가 c#이고, 아래는 c입니다. c코드는 정답처리되었고, c# 쪽은 32번 줄에서 j가 할당되지 않았다고 나옵니다.

bupjae   5년 전

C# 에서는 지역변수에 값을 써넣기 전에 읽으려고 하면 컴파일 에러가 발생합니다.

사람이 판단하기에는 18번째 줄을 처음 만났을 때는 k가 1이므로 20번째 줄이 적어도 1번 실행되기 때문에 j에 값을 써넣은 상태라는 것을 알 수 있지만

C#의 문법 규칙에 따르면 20~30번째 줄은 0번 실행될 가능성이 있는 것으로 봅니다. 이렇게 되면 32번째 줄에서 j를 읽으려고 할 때 j에 값을 써 넣지 않은 상태일 수도 있다고 판단해서 컴파일 에러가 발생합니다.

bupjae   5년 전

멍청한(?) 컴파일러를 위해 16번째 줄을 int j = 0; 으로 해 두면 컴파일할 수 있습니다.

adfsfsf   5년 전

그렇군요. 감사합니다. 앞으로 C#으로 변수를 선언할 때에는 선언과 동시에 0이나 -1  등 소스에 영향이 없는 값으로 미리 초기화 하는 습관을 가져야겠군요.

댓글을 작성하려면 로그인해야 합니다.