어제 답변에서 C언어 코드에서 a, k 변수 모두 int 형 변수이고 a = k - k/4 * 4; 일 때
/보다 *의 우선순위가 커서 a = k - k/16; 이라고 하셨는데
주어진 식은 k를 4로 나눈 나머지를 a에 저장하는 것 이므로 k/4 의 정수부분을 취한 다음 4를 곱하는거 아닌가요?
그리고 a = k - k/16으로 만드려면 4*4부분에 괄호()를 씌워야하는거 같은데
안녕하세요. 길벗 수험서 운영팀입니다.
지난 답변에서 결합규칙과 우선순위의 착오로 인해 잘못된 답변으로 착오를 드린 점 사과드립니다.
C언어 사칙연산에서 연산자 우선순위에 따라 순서대로 연산되나, 산술 연산자 *, /, %는 결합규칙에 따라 좌측에서 우측 순대로 연산됩니다.
"a = k - k / 4 * 4" 에서는 k가 30라고 가정했을 때,
a = 30 - 30 / 4 * 4
= 30 - 7 * 4 ------- 30 / 4 = 7.5 이지만 30을 저장하고 있는 k가 정수형 변수이므로 소수점 자리는 생략됩니다.
= 30 - 28
= 2
가 됩니다.
행복한 하루되세요.^^
-
*2018-07-26 09:36:16
안녕하세요. 길벗 수험서 운영팀입니다.
지난 답변에서 결합규칙과 우선순위의 착오로 인해 잘못된 답변으로 착오를 드린 점 사과드립니다.
C언어 사칙연산에서 연산자 우선순위에 따라 순서대로 연산되나, 산술 연산자 *, /, %는 결합규칙에 따라 좌측에서 우측 순대로 연산됩니다.
"a = k - k / 4 * 4" 에서는 k가 30라고 가정했을 때,
a = 30 - 30 / 4 * 4
= 30 - 7 * 4 ------- 30 / 4 = 7.5 이지만 30을 저장하고 있는 k가 정수형 변수이므로 소수점 자리는 생략됩니다.
= 30 - 28
= 2
가 됩니다.
행복한 하루되세요.^^