int a = 10; int b = 20; for (int i=0; i<10; i++) { int c = a + b; a = a + i; }
이렇게 선언하면 c값이 루프를 돌면서 계속 변하는건가요?? 아니면 선언될 때만 값이 할당되고 그대로 인가요??
똑똑한 컴파일러라면 계산을 안할 수도 있습니다. 하지만 printf("%d\n", c) 를 포함한다면 매번 c를 계산하겠죠.
언제나 삽질 - http://tisphie.net/typo/ 프로그래밍 언어 개발 - http://langdev.net
Mingw 결과입니다.
class Test { public: Test(){cout << "Creating..." << endl;} ~Test(){cout << "Destroying..." << endl;} int i; }; int main() { for(int i = 0; i < 10 ; ++i) Test t; return 0; }
명쾌한 답변 감사합니다.
완료된 글이지만.. 원론적으로...
원칙적으로는 매번 stack 에 변수 c를 설정하고 계산하고 버려 버리는게 맞는데요,
컴파일러 및 최적화 옵션 정도에 따라 살짝 차이가 날 수가 있습니다. 특히 대상으로 하는 cpu의 로직에 따라서도 영향이 아주 없을것 같진 않네요.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
똑똑한 컴파일러라면
똑똑한 컴파일러라면 계산을 안할 수도 있습니다.
하지만 printf("%d\n", c) 를 포함한다면 매번 c를 계산하겠죠.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
Mingw
Mingw 결과입니다.
실행결과
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
Creating...
Destroying...
명쾌한 답변
명쾌한 답변 감사합니다.
완료된 글이지만..
완료된 글이지만.. 원론적으로...
원칙적으로는 매번 stack 에 변수 c를 설정하고 계산하고 버려 버리는게 맞는데요,
컴파일러 및 최적화 옵션 정도에 따라 살짝 차이가 날 수가 있습니다.
특히 대상으로 하는 cpu의 로직에 따라서도 영향이 아주 없을것 같진 않네요.
댓글 달기