E D R , A S I H C RSS

i++VS++i

C/C++ ์—์„œ ++i ์™€ i++ ์˜ ์„ฑ๋Šฅ ์ฐจ์ด์— ๋Œ€ํ•œ ๋น„๊ต

  • ์‚ฌ์šฉํ•œ ์ปดํŒŒ์ผ๋Ÿฌ : Microsoft 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86 (Microsoft Visual C++ 6.0 ์— Service Pack 5 ๋ฅผ ์„ค์น˜ํ–ˆ์„๋•Œ์˜ ์ปดํŒŒ์ผ๋Ÿฌ)




1. ๊ทธ๋ƒฅ ์‚ฌ์šฉ

  • ๋น„๊ตํ•œ C/C++ ์†Œ์Šค

~cpp 
#include <stdio.h>
void main()
{
	int i;
	scanf("%d", &i);
	++i;
	printf("%d", i);
}
~cpp 
#include <stdio.h>
void main()
{
	int i;
	scanf("%d", &i);
	i++;    // ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฐจ์ด๊ฐ€ ๋‹น์—ฐํžˆ ์—†์ง€ ์•Š์„๊นŒ์š”? ์ด๋Ÿด๋•Œ๋Š” ์„ ํ–‰์ด๋“  ํ›„ํ–‰์ด๋“  ์ฆ๊ฐ€ํ•œ๋’ค์— printf์—์„œ ๊ทธ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์œผ๋‹ˆ..
	printf("%d", i);     // ๋ฌธ์ œ๊ฐ€ ๋˜๋Š”๊ฑด ํ•จ์ˆ˜(i++)๋˜๋Š” ํ•จ์ˆ˜(++i)์ด๋Ÿฐ๋ฐ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ๊ฑฐ ๊ฐ™์€๋ฐ..
}
๊ฐ„๋‹จํžˆ ์ƒ๊ฐํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.. i++ ์ด๋‚˜ ++i ๋ชจ๋‘ ๊ฐ’(value)์„ ์ƒ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ์ž ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ.. i ๊ฐ€ 5 ์ผ๋•Œ i++ ์˜ ๊ฐ’์€ 5์ด๋ฏ€๋กœ.. printf("%d", i) ๋Š” 5๋ฅผ ์ฐ์–ด์ฃผ๊ฒ ์ง€์š”.

1.1. ์ตœ์ ํ™”ํ•˜์ง€ ์•Š์„๋•Œ

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	ecx, DWORD PTR _i$[ebp]	; ๋ณ€์ˆ˜ i ์ธ _i$[ebp] ๋ฅผ ecx ๋กœ ์˜ฎ๊ธฐ๊ณ 
    	add	ecx, 1			; ecx ์— 1 ์„ ๋”ํ•˜๊ณ 
    	mov	DWORD PTR _i$[ebp], ecx	; ecx ๋ฅผ ๋‹ค์‹œ _i$[ebp] ๋กœ
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	ecx, DWORD PTR _i$[ebp]	; ์ฐจ์ด ์—†์Œ
    	add	ecx, 1
    	mov	DWORD PTR _i$[ebp], ecx
    

1.2. ํฌ๊ธฐ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	DWORD PTR _i$[ebp]		; ๋ณ€์ˆ˜ i ์ธ _i$[ebp] ๋ฅผ 1 ๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ด
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	DWORD PTR _i$[ebp]		; ์ฐจ์ด ์—†์Œ
    

1.3. ์†๋„ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[esp+12]	; ๋ณ€์ˆ˜ i ์ธ _i$[esp+12] ๋ฅผ eax ๋กœ ์˜ฎ๊ธฐ๊ณ 
    	inc	eax			; eax ๋ฅผ 1 ๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ด
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[esp+12]	; ์ฐจ์ด ์—†์Œ
    	inc	eax
    


2. for ๋ฌธ์—์„œ ์‚ฌ์šฉ

  • ๋น„๊ตํ•œ C/C++ ์†Œ์Šค

~cpp 
#include <stdio.h>
void main()
{
	for(int i = 0 ; i < 10 ; ++i)
		printf("%d", i);
}
~cpp 
#include <stdio.h>
void main()
{
	for(int i = 0 ; i < 10 ; i++)
		printf("%d", i);
}

2.1. ์ตœ์ ํ™”ํ•˜์ง€ ์•Š์„๋•Œ

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[ebp]	; ๋ณ€์ˆ˜ i ์ธ _i$[ebp] ๋ฅผ eax ๋กœ ์˜ฎ๊ธฐ๊ณ 
    	add	eax, 1			; eax ์— 1 ์„ ๋”ํ•˜๊ณ 
    	mov	DWORD PTR _i$[ebp], eax	; eax ๋ฅผ ๋‹ค์‹œ _i$[ebp] ๋กœ
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[ebp]	; ์ฐจ์ด ์—†์Œ
    	add	eax, 1
    	mov	DWORD PTR _i$[ebp], eax
    

2.2. ํฌ๊ธฐ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	esi			; ๋ณ€์ˆ˜ i ์ธ esi ๋ฅผ 1 ๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ด
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	esi			; ์ฐจ์ด ์—†์Œ
    

2.3. ์†๋„ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	esi			; ๋ณ€์ˆ˜ i ์ธ esi ๋ฅผ 1 ๋งŒํผ ์ฆ๊ฐ€์‹œํ‚ด
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	esi			; ์ฐจ์ด ์—†์Œ
    


3. ํ•จ์ˆ˜ ์—์„œ ์‚ฌ์šฉ

  • ๋น„๊ตํ•œ C/C++ ์†Œ์Šค

~cpp 
#include <stdio.h>
void main()
{
	int i;
	scanf("%d", &i);
	printf("%d", ++i);
}
~cpp 
#include <stdio.h>
void main()
{
	int i;
	scanf("%d", &i);
	printf("%d", i++);
}

3.1. No ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	ecx, DWORD PTR _i$[ebp]
    	add	ecx, 1
    	mov	DWORD PTR _i$[ebp], ecx
    	mov	edx, DWORD PTR _i$[ebp]
    	push	edx
    	push	OFFSET FLAT:$SG528
    	call	_printf
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	ecx, DWORD PTR _i$[ebp]
    	mov	DWORD PTR -8+[ebp], ecx
    	mov	edx, DWORD PTR -8+[ebp]
    	push	edx
    	push	OFFSET FLAT:$SG528
    	mov	eax, DWORD PTR _i$[ebp]
    	add	eax, 1
    	mov	DWORD PTR _i$[ebp], eax
    	call	_printf
    

3.2. ํฌ๊ธฐ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	inc	DWORD PTR _i$[ebp]
    	push	DWORD PTR _i$[ebp]
    	push	esi
    	call	_printf
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[ebp]
    	inc	DWORD PTR _i$[ebp]
    	push	eax
    	push	esi
    	call	_printf
    

3.3. ์†๋„ ์ตœ์ ํ™”

  • ++i ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[esp+12]
    	inc	eax
    	push	eax
    	push	OFFSET FLAT:??_C@_02MECO@?$CFd?$AA@
    	mov	DWORD PTR _i$[esp+20], eax
    	call	_printf
    

  • i++ ์˜ ์ปดํŒŒ์ผ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ ์†Œ์Šค
    ~cpp 
    	mov	eax, DWORD PTR _i$[esp+12]
    	mov	ecx, eax
    	inc	eax
    	push	ecx
    	push	OFFSET FLAT:??_C@_02MECO@?$CFd?$AA@
    	mov	DWORD PTR _i$[esp+20], eax
    	call	_printf
    

4. ์—ฐ์‚ฐ์ž ์žฌ์ •์˜๋กœ ๊ตฌํ˜„ํ–ˆ์„๋•Œ

class ์—์„œ operator overloading ์œผ๋กœ ์ „์œ„์ฆ๊ฐ€(๊ฐ์†Œ)์™€ ํ›„์œ„์ฆ๊ฐ€(๊ฐ์†Œ)๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.
~cpp 
MyInteger& MyInteger::operator++() // ์ „์œ„์ฆ๊ฐ€
{
 *this += 1;
 return *this;
}
const MyInteger MyInteger::operator++(int) // ํ›„์œ„์ฆ๊ฐ€. ์ „๋‹ฌ์ธ์ž๋กœ int ๊ฐ€ ์žˆ์ง€๋งŒ
                                         // ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ operator++(0)์„ ํ˜ธ์ถœํ•œ๋‹ค.
{
 const MyInteger oldValue = *this;
 ++(*this);

 return oldValue;
}
 
์—ฐ์‚ฐ์ž ์žฌ์ •์˜๋ฅผ ํ•˜์—ฌ ํŠน์ • ๊ฐœ์ฒด์— ๋Œ€ํ•ด ์ „์œ„์ฆ๊ฐ€์™€ ํ›„์œ„์ฆ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ์ „์œ„์ฆ๊ฐ€๊ฐ€ ํ›„์œ„์ฆ๊ฐ€๋ณด๋‹ค ํšจ์œจ์ด ์ข‹๋‹ค. operator++(int) ํ•จ์ˆ˜์—์„œ๋Š” ์ž„์‹œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค.
- from MoreEffectiveC++

4.1. STL ์—์„œ

++i, ๋‚˜ i++ ๋‘˜๋‹ค ์ƒ๊ด€ ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, ++i์— ์Šต๊ด€์„ ๋“ค์ด์ž, ์œ„์˜ ์—ฐ์‚ฐ์ž ์žฌ์ •์˜๋Š” STL์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ์ด๋‹ค. ํ›„์œ„ ์—ฐ์‚ฐ์ž๊ฐ€ ๊ตฌํ˜„๋œ Iterator๋Š” ๋ชจ๋‘ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋‹จ์—์„œ Iterator ์˜ ๋ณต์‚ฌ๋ฅผ ์ตœ์ ํ™” ํ• ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์—์„œ๋Š” ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ
~cpp 
static const int MAX = 5;
int array[5] = {1,2,3,4,5}
vector<int> intArray(&array[0], &array[MAX]);

for(vector<int>::iterator i = intArray.begin(); i != intArray.end(); ++i){
    cout << *i << endl;
}
๊ฐ€ ๊ฐ์ฒด ๋ณต์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ์ฒด๊ฐ€ ํฌ๋‹ค๋ฉด ์ด ๋น„์šฉ์€ ๋ฌด์‹œํ•  ์ˆ˜ ์—†๋‹ค. ๋” ๊ถ๊ธˆํ•˜๋ฉด, STL ์†Œ์Šค๋ฅผ ๋ถ„์„ํ•ด ๋ณด์ž.
--NeoCoin

5. ๊ฒฐ๋ก 

๊ทธ๋ƒฅ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋‚˜, for ๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋Š” ++i ์™€ i++ ์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋Š” ++i ๋ณด๋‹ค i++ ์˜ ์ฝ”๋“œ๊ฐ€ ๋ช…๋ น์–ด ํ•œ๊ฐœ ์ •๋„ ๊ธธ์–ด์ง„๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋‚˜ for ๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” i++ ์„ ์“ด ๊ณณ์„ ++i ๋กœ ์„œ๋กœ ๋ฐ”๊ฟ” ์จ๋„ ์ƒ๊ด€ ์—†์œผ๋‚˜, ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์—๋Š” i++ ์„ ์“ด ๊ณณ์„ ++i ๋กœ ๋ฐ”๊พธ๋ฉด ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•จ์ˆ˜์—์„œ i++ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ํ”„๋กœ๊ทธ๋žจ์ด ํ•œ ์ค„ ์ด๋ผ๋„ ์ถ”๊ฐ€๋˜์ง€ ์•Š๊ณ  ++i ๋กœ ๋ฐ”๊ฟ€์ˆ˜ ์žˆ์œผ๋ฉด ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋‹ค. ๋˜ํ•œ ๊ทธ๋ƒฅ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ๋‚˜, for ๋ฌธ์—์„œ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๋Š” ++i ๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ์ƒ๊ด€ ์—†๋‹ค. --์ƒ๊ทœ

6. ํ† ๋ก 

  • ์•„์•…... ์–ด์…ˆ์ด๋‹ค. ์ „ ๋ด๋„ ๋ชจ๋ฅด๊ฒ ์œผ๋‹ˆ ๊ฑ ์ œ๊ฐ€ ๋ณธ ๊ธ€๊ท€๋ฅผ ๊ทธ๋Œ€๋กœ ์ธ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

~cpp 
์—ฌ๊ธฐ์—์„œ ๊ต๊ณผ์„œ์ ์ธ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๋‚˜ ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๋ฃจํ”„ ์•ˆ์—์„œ ํ•ญ์ƒ ์„ ํ–‰ ์ฆ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ?

ํšจ์œจ์„ฑ ๋•Œ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์ด ์ •๋‹ต์ด๋‹ค. ํ›„ํ–‰ ์ฆ๊ฐ€ ์—ฐ์‚ฐ์ž๋Š” ๋ณ€์ˆ˜์˜ ์ด์ „ ๊ฐ’์„ ๋Œ๋ ค ์ฃผ๋ฏ€๋กœ ์ด์ „ ๊ฐ’์„ ๋‹ด์„ ์ž„์‹œ์ ์ธ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ํŒŒ๊ดดํ•˜๋Š” ๊ณผ์ •์ด ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. 
ํ›„ํ–‰ ์ฆ๊ฐ€๋กœ๋„ ์„ ํ–‰ ์ฆ๊ฐ€์™€ ๋™์ผํ•œ ๋ฐฉ์‹์˜ ๋ฃจํ”„๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ํ›„ํ–‰ ์ฆ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•  ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ํ•ญ์ƒ ์„ ํ–‰ ์ฆ๊ฐ€ ๋˜๋Š” ์„ ํ–‰ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž๋ฅผ 
์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํžˆ๋‹ค.
์š”์ฆ˜ ์ปดํŒŒ์ผ๋Ÿฌ๋“ค์€ ์ตœ์ ํ™”๊ฐ€ ์ž˜ ๋˜์–ด์„œ ์ด์ „ ๊ฐ’์„ ๋Œ๋ ค์ฃผ๊ธฐ์œ„ํ•ด ์ด์ „ ๊ฐ’์„ ๋‹ด์„ ์ž„์‹œ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚จ ํ›„ ์ž„์‹œ ๋ณ€์ˆ˜์— ์žˆ๋Š” ์ด์ „ ๊ฐ’์„ ๋Œ๋ ค์ฃผ๊ณ  ์ž„์‹œ ๋ณ€์ˆ˜๋ฅผ ํŒŒ๊ดดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ , ์ด์ „ ๊ฐ’์„ ๋จผ์ € ๋Œ๋ ค์ฃผ๊ณ  ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

์†๋„๊ฐ€ ์•„์ฃผ ๋นจ๋ผ์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ๋Š” ํŠน์ • ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์–ด๋–ป๊ฒŒ ํ•  ๋•Œ๊ฐ€ ์„ฑ๋Šฅ์ด ๋” ์ข‹์€์ง€ ์•Œ ํ•„์š”๊ฐ€ ์žˆ์„์ˆ˜๋„ ์žˆ๋‹ค.
๋ฌผ๋ก  ํŠน์ • ์ปดํŒŒ์ผ๋Ÿฌ๋ผ๋Š” ๊ฒƒ์ด ์–ธ์ œ๋‚˜ ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ผ๋ฐ˜ํ™”๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ณ์ง€ ์•Š๋‹ค.

์ฉ.. ์ €๋Š” ๋ณ„๋กœ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋ฐ์š”... (๋ฌด๊ฐ๊ฐํ•˜๋‹ค๋Š”;;;) Amdahl's Law ์˜€๋‚˜.. ํ”„๋กœ๊ทธ๋žจ ์†๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋ ค๋ฉด, ์ œ์ผ ์‹œ๊ฐ„์„ ๋งŽ์ด ์žก์•„๋จน๋Š” ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๋ผ๊ณ ... ์ฉ.. ๋งˆ์ดํฌ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜. ๋ฆฌ์–ผํƒ€์ž„ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๊ฐ™์€๊ณณ์—์„œ๋Š” ํ•„์š”ํ• ์ˆ˜๋„ ์žˆ๊ฒ ๊ตฐ์š”.; - ์ž„์ธํƒ

7. ++i ์ฐฌ์„ฑ

๋™์ผํ•œ ๊ธฐ๋Šฅ์— ์“ด๋‹ค๋ฉด, ++i ์— ์Šต๊ด€์„ ๋“ค์ด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. STL๊ฐ™์€ ์—ฐ์‚ฐ์ž ์žฌ์ •์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋•Œ๋ฌธ --NeoCoin

8. i++ ์ฐฌ์„ฑ

i++์€ ๊ทธ ํŠน์œ ์˜ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ์“ฐ๋Š”๊ฒƒ์ด ์ข‹์„๊ฒƒ ๊ฐ™๋‹ค. i++๋ฅผ ์“ฐ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘์ค„์ด ํ•œ์ค„๋กœ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ˜„์žฌ ์ž๋ฃŒ๋ฅผ ์ฐ๊ณ , ๋‹ค์Œ ์ž๋ฃŒ๋กœ ์นด์šดํŒ…์„ ํ•˜๋ ค ํ•œ๋‹ค.

~cpp 
...
cout << data[i] << endl
i += 1;
...
๊ฐ€ ์ด๋ ‡๊ฒŒ ํ•œ์ค„๋กœ ์ฃผ๋Š” ํ›„์œ„ ์—ฐ์‚ฐ์ž์˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ• ๋•Œ ์“ฐ์ž.

~cpp 
cout << data[i++] << endl;
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:42
Processing time 0.0113 sec