sslktong   5년 전

질문드립니다.. 해당되는 문제 번호가 딱히 없어 번호는 기입하지 않았어요


1)

항상 쓰면서 궁금했는데, 아래와 같은 코드가 있을 때

for문을 한 번 돌 때마다 조건문을 계속 테스트할텐데,

이 때 조건문에 해당하는 (int)sqrt(n)부분을 매번 계산하나요?


매번 계산한다면 경우에 따라 상당히 시간소모가 클 것 같은데, 그 바로 아래처럼 다른 변수에 꼭 따로 저장을 해야하는지 궁금합니다.


2)

컴파일러가 자동으로 해준다는 말을 들은 것도 같은데, 혹시 그 기준 같은게 있을까요?

가령 아래 2번 예시처럼 n이 변하면 매번 계산이 된다던지..

궁금합니다.

eric00513   5년 전

항상 조건문은 loop가 돌아갈 때마다 확인됩니다.

그래서 만약

int n=10000;

for(int i=0; i<sqrt(n); ++i)

    printf("%d\n" ,++n);

을 실행해 보고 출력결과를 확인해보면 sqrt(n)이 매번 계산되었다는 것이 확인됩니다.

1번 소스의 두 번째 main 함수 안의 소스처럼 변수 t에서 미리 sqrt(n)을 집어넣으면, 아주 조금 시간이 단축되겠죠. (거의 미세한 차이)

그래서 문자열 길이를 사용하는 프로그램은 strlen(...)을 변수 하나에 저장해 놓고 사용합니다. (strlen 함수를 모른다면, 읽기!)

eric00513   5년 전

그리고 while, do while 등에도 위의 내용이 해당됩니다.

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