이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
강동현
가입: 2011년 9월 26일 올린 글: 19
|
올려짐: 2016년6월13일 5:52 주제: eo_test5.k 질문입니다. |
|
|
/* x is even */
/* quiz */
a := 1;
b := 2;
x := readInt;
if (x) (p := &a) (p := 10);
if (x) (p := &b) (p := p + 1);
c := *p /* p must point to {b}, not {a, b}. Why? */
에서, x가 0이 들어올 경우 c:= *p에서 에러가 날 수 있으므로 잘못된 코드 아닌가요? |
|
위로 |
|
|
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2016년6월13일 10:16 주제: |
|
|
안녕하세요,
말씀하신대로 입력이 0이 들어오면 에러가 발생할 수 있습니다. Quiz3에서 분석기는 잘 도는 프로그램만 입력으로 받는다고 가정한 것을 깜박했네요.
해당 예제는 아래와 같이 수정하도록 하겠습니다.
예제의 핵심은 그대로이므로 (두번째 if문을 실행 후에 p가 a의 주소를 가리키지 않음) 이 수정 때문에 특별히 분석기를 고치실 일은 없을 것입니다.
코드: |
a := 1;
b := 2;
x := readInt;
if (x) (p := &a) (p := 10);
if (x) (p := &b) (p := p + 1);
/* p must be (odd, {b}) here, not (odd, {a, b}). Why? */
if (x) (c := *p) (c := 4)
|
조교 드림 |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|