덧셈과 곱셈처럼 누구나 다 아는 연산자 우선순위라도 괄호로 우선순위를 명확하게 해야 하고 식이 너무 길어지면 식을 나누고 행이 너무 길면 함수로 빼는게 맞습니다. 연산자 우선순위 믿고 괄호없이 짜다가 어이없는 실수로 몇시간을 허비할지도 몰라요. 그래서 연산자 우선순위와 전위 / 후위 연산자에 의한 변수 수정을 믿어서는 안됩니다.
저렇게 짜진 않지만, 이해 못하면 폭망이죠. 현업에서 다른 분들 코드를 검토할 일이 많은 상황인데 생각보다 기본이 부실한 분들이 적지 않습니다.
아마 문제는 각 라인에서 x, y, z 를 모두 답해야겠네요. 문제 의도만 보자면.
뎅뎅이!
IP 223.♡.203.125
05-19
2020-05-19 10:44:19
·
틀려라. 라는 의도가 보이는 아주 나쁜 형태의 시험이군요.
클리으앙
IP 203.♡.63.147
05-19
2020-05-19 10:45:28
·
음... 문제는 전혀 이상이 없는거 같고요
이런 문제를 내는 이유는 변별력 때문이죠
IP 121.♡.248.131
05-19
2020-05-19 10:46:10
·
갠적인 생각이지만..
c 언어 시험문제로 저렇게 나왔다면..
점수 주려고 만든 문제같아요..
숙묵
IP 1.♡.102.47
05-19
2020-05-19 10:47:11
·
실제로 프로그래밍할때 저렇게하면 만드는 사람 본인도 피곤해요.
숙묵
IP 1.♡.102.47
05-19
2020-05-19 10:50:06
·
그래도 학생들 괴롭힐 때는 아주 좋은 문제입니다. 저도 예전에 많이 애용(응?)했습니다. ㅋㅋㅋ
ck노움
IP 117.♡.14.135
05-19
2020-05-19 10:50:25
·
우선순위 + 결합방향
토끼오
IP 110.♡.16.1
05-19
2020-05-19 10:53:26
·
저도 학부때 저런 시험 많이 쳤었는데... 알면 적절하게 쓰고 안쓰고 할 수 있습니다. 모르거나 어설프게 알면 쓰고도 왜 문제가 있는지 모르죠. 그리고 학부때는 진로가 어디로 갈지 모르니.. 기초부터 차근차근 알아야죠. 컴파일러 개발할지도 모르죠. 학원이라면 쓸모 없는 문제긴 합니다. 저렇게 쓰지 마세요. 하면 되거든요.
우리나라 수능 영어하고 비슷하네요.. 실무에서 사용 제로에 가까운 코드를 변별력을 가르기위해 만든 문제....
PCBR
IP 73.♡.74.61
05-19
2020-05-19 11:29:09
·
실무에서 엄청 많이 쓰지 않나요? 적당하고 좋은 문제 같은데요.
작은쉼터
IP 125.♡.200.21
05-19
2020-05-19 11:44:36
·
학교 수업 도중에는 윗분들 말씀 처럼 최대한 혼동을 줄수 있는 요소를 제거하며 코드를 작성하라고 합니다만, 연산자 우선순위, 단항연산자의 전위/후위에 따른 값 변화 등을 조금더 강조해서 수업을 진행하곤 합니다. 그러한 결과로 본문과 같은 평가 문제를 저도 많이 출제하는 편입니다. 학생들의 답은.... 많이 어려워하고(헷갈려하고) 잘 틀리는 편입니다. ^^;;
진심으로 공감합니다.
아무도 저렇게 짜지 않습니다.
설령 저런 수식이 필요하면, 임시 변수 하나 더 선언해서, 누가 봐도 명확하고 읽기 편하게 짭니다.
컴파일러는 어지간한 수식을 알아서 잘 최적화할꺼구요.
== 를 위한 빌드업요
회사에서 저렇게 짜놓으면 욕먹기 딱 좋은..
물론 알고는 있어야합니다.
알고 안쓰는거랑... 모르고 있다가 디버깅못하는거랑은 천지차이라서 ㅎㅎ
무의미한 문제네요...
x, y, z
3, 2, 6
3, 2, 3
10, 3, 4
3, 3, 1
x=2 y=3 z=4 일때 연산후 x y z 결과를 기입 하시오.
즉 3-1 , 3-2, 3-3, 3-4 에 대하여 전부 xyz 값을 다 기입 하는거니깐
답을 구해야 하는건 총 12개 입니다.
연산자 우선순위의 이해를 하고 있는가 시험하기 위한 문제로..
이런 문제도 있을법한데요
이해를 못 할 정도의 레벨도 아니고..
그리고 프로그램 코드형 문제의 장점은
이대로 코드 돌려보시면 되죠 ㅎ 돌아가는지 답은 나오는지 찍어보시면 될텐데요
시험과 실전은 다르잖아요?
다시 보니 (3)에서 x 값을 건드렸으니, (4)에서 x 값을 초기값을 쓸 건지 변경된 값으로 쓸 건지는 좀 불명확하다고 볼 여지가 있어보이긴 하네요.
각각이라고 했으니, 독립적으로 보면 될 거 같아 초기값으로 하면 될 거로 보입니다.
분명히 코드에 이상이 없다고 생각했는데 IndexOutBoundException이 발생하는 매직~~~
팩트하나 말씀드리자면 저 연산자들 위치 몇개만 바꾸고 교수한테 던지면 지들도 틀립니다.
현업에서 다른 분들 코드를 검토할 일이 많은 상황인데 생각보다 기본이 부실한 분들이 적지 않습니다.
아마 문제는 각 라인에서 x, y, z 를 모두 답해야겠네요. 문제 의도만 보자면.
문제는 전혀 이상이 없는거 같고요
이런 문제를 내는 이유는 변별력 때문이죠
c 언어 시험문제로 저렇게 나왔다면..
점수 주려고 만든 문제같아요..
저도 예전에 많이 애용(응?)했습니다. ㅋㅋㅋ
알면 적절하게 쓰고 안쓰고 할 수 있습니다. 모르거나 어설프게 알면 쓰고도 왜 문제가 있는지 모르죠.
그리고 학부때는 진로가 어디로 갈지 모르니.. 기초부터 차근차근 알아야죠. 컴파일러 개발할지도 모르죠.
학원이라면 쓸모 없는 문제긴 합니다. 저렇게 쓰지 마세요. 하면 되거든요.
1. z의 결과에 주의해야 합니다. ++x는 전위연산자, y--는 후위연산자가 사용되었으므로 y--는 식이 수행된 후에 반영됩니다.
x는 3, y는 2, z는 6이 됩니다.
2. 후위연산자만 주의하면 됩니다.
x는 3, y는 2, z는 3이 됩니다.
3. x*=y가 x=x*y인 것만 알면 쉽게 풀 수 있는 문제입니다.
x는 10, y는 3, z는 4가 됩니다.
4. ==는 비교연산자입니다. 따라서 ++x(x=x+1)와 y의 값이 동일하면 참(1), 다르면 거짓(0)이 z에 반영됩니다.
x는 3, y는 3, z는 1이 됩니다.
물론 실무에서 저렇게 사용하면 미친놈 소리 듣기 딱 좋지만 대학교는 교육을 위한 기관이니 문제는 없어보입니다.
난이도를 평가하자면... C의 연산자에 대해서 안다면 쉽게 풀 수 있으니 점수를 주기 위한 문제라고 봅니다.
한번 알아 두고 가면 좋아요. ㅎㅎ
/Vollago
코드를 작성하라고 합니다만, 연산자 우선순위, 단항연산자의 전위/후위에 따른
값 변화 등을 조금더 강조해서 수업을 진행하곤 합니다.
그러한 결과로 본문과 같은 평가 문제를 저도 많이 출제하는 편입니다.
학생들의 답은.... 많이 어려워하고(헷갈려하고) 잘 틀리는 편입니다. ^^;;
어디까지나 시험은 변별이 목적이니 어쩔 수 없이 내는 것 같습니다
현업에선 연산자 우선순위를 몰라도 알수있게 다 괄호 치죠
본인이 의도한 바가 뭔지 명확히 보여줘야하니까요.
물론 대학 시험 정도로는 내볼 수는 있다고 봅니다.
하지만 유저가 그건 암기하고 저렇게 사용할 이유는 없죠
갠적으론 저런 문제는 가치가 없다고 생각합니다
잘 짜여진 코드를 보고 작성하는 훈련을 해야죠