μ¦κ°(++), κ°μ(--)μ°μ°μμ λν΄ μ€λμ μ΄μΌκΈ°λ₯Ό ν κΉ ν©λλ€. μ΄ μ¦κ°μ°μ°μλ μμ μ 곡무μ μνμ λ¨κ³¨ μ£Όμ λ‘ λμλ μνλ¬Έμ μ΄κ³ μ»΄ν¨ν° κ΄λ ¨ μκ²©μ¦ μνμμλ νκΈ°λ‘ μμ£Ό μΆμ²΄λλ λ¬Έμ μμ΅λλ€. μ¦κ° μ°μ°μλ μ΄λ ΅μ§ μμ§λ§ νΌλμ μΌκΈ°νλ μ£Όμ λ‘ μ€μλ‘ ν리λ κ²½μ°κ° λ§μ΅λλ€. μ! νΌλμ λ§μ΄ νλμ§ μμ λ΄ μλ€.
λ¬΄μ§ κ°λ¨ν μ°μ°μμ λλ€.
a=1 μΌλ
s= 1 + (a++);
μ΄λ κ² νλ©΄ sμ κ°? sμ 2κ° λ©λλ€.
s = 1 + (++a);
μ΄λ κ² νλ©΄ sμ κ°? sμ 3μ΄ λ©λλ€.
μ¦, aμ κ²½μ° aλ₯Ό λ¨Όμ μ¦κ° ν λ€μ μ°μ μ°μ°μ λμ νκ³ aμ κ²½μ° aλ₯Ό λ¨Όμ μ°μ μ°μ°λμ νκ³ λμ€μ μ¦κ°ν©λλ€.
a=1;
s = 1 + (a++); => 1+1
s = 1 + (++a); => 1+2
μ΄λ€ μλ―ΈμΈμ§ μνκ² μ§μ. κ°μμ κ²½μ°λ λ§μ°¬κ°μ§ μ λλ€.
b=1;
s = 1 + (b--); => 1+1
s = 1 + (--b); => 1+0
μ΄λ ΅μ§ μμ£ . κ·Έλ¬λ©΄ λμΌλ‘ νμΈνκΈ° μν΄ μ½λ©μ ν΄ λ΄ μλ€.
[μ½λ©]
#include
int main(int argc, char *argv[]) {
int a=1;
int b=1;
printf("a = %d\n",a);
printf("b = %d\n",b);
printf("a++ = %d\n",a++);
printf("++b = %d\n",++b);
return 0;
}
[κ²°κ³Ό]
μ¦κ° μ°μ°μ κ²°κ³Όμ λλ€. μ¬λ¬λΆλμ κ°μ μ°μ°μΌλ‘ μμ ν΄μ μ½λ©ν΄ 보μΈμ.
μ΄λ ΅μ§ μκ³ νΌλ λ μ΄μ΄ μλλ° μ΄κ² κ³Όκ±° 곡무μ μνμ λ¨κ³¨ λ¬Έμ μλ€κ³ μκ°νμλ©΄ μμν΄ νμ€ κ±°μμ. μ΄μ κ·Έ μ΄μ λ₯Ό μ΄ν΄ λ³΄κ² μ΅λλ€.
[μμ€]
#include
int main(int argc, char *argv[]) {
int a=1;
int b=1;
printf("a = %d\n",a);
printf("a++ = %d\n",a++);
printf("++a = %d\n",++a);
printf("b = %d\n",b);
printf("b++ = %d, ++b = %d\n",b++,++b);
return 0;
}
μ΄λ κ² νλ©΄ μ΄λ€ κ²°κ³Όκ° λμ¬κΉμ. μ°μ 머리μμΌλ‘ κ³μ°ν΄λ³΄μΈμ.
[κ²°κ³Ό]
μ΄λ κ² κ²°κ³Όκ° λμλμ. μ²μ μ¦κ°μ°μ°μλ₯Ό μ°μλ λΆλ€μ μμ κ°μ κ²°κ³Όκ° λμ¨ μ΄μ λ₯Ό μ’ νκ°λ € νμ€ κ±°μμ.
aλ μ’ μμΈν κ²°κ³Όλ₯Ό 보μλ©΄ μ λ κ² μ¦κ°νλ 거ꡬλ νκ² μ§λ§ bμ μ ν μ΄ν΄κ° λμ§ μμ κ±°μμ.
bμ κ²½μ°λ printf()ν¨μλ μ»΄νμΌ μ λ€μμλΆν° μ§ν ν©λλ€. μ¦κ°μ°μ°μλ λ€μμ λΆν° μμνλ κ²μ΄μ£ . κ·Έλμ bμ μ¦κ°κ° λ¨Όμ μ€λ₯Έμͺ½ λΆν° μ¦κ°ν©λλ€. κ·Έλ¦¬κ³ λμ
μ μμλλ‘κ² μ£ .
b++, b λ‘ μμ λ bκ° λ¨Όμ μ¦κ° νλ€μ bμ νκΈ° λλ¬Έμ bμ νμ¬ μμΉλ 2κ° λ©λλ€. κ·Έλ¦¬κ³ bμμΌλ‘ 2κ° λ¨Όμ λμ
ν λ€μ μ¦κ°νκΈ° λλ¬Έμ λλ²μ§Έ bμ κ°μ 3μΈ λ μνλ‘ λμ
μ΄ λ©λλ€. μ κ° μ€λͺ
μ νλ©΄μλ μ’ κ·Έλ λ€μ. μλ¬΄νΌ μ΄ λΆλΆμ μ»΄νμΌλ¬μ λ°λΌμ μ½κ° μ°¨μ΄κ° μμ΅λλ€. κ·Έλμ μ¦κ°μ°μ°μλ₯Ό μ¬μ©ν λλ μ¬μ©νμλ μ»΄νμΌλ¬μ λ¨Όμ λ°λͺ¨ μμ λ‘ κ²°κ³Όλ₯Ό νμΈνμκ³ μ¬μ©νμ
μ νΌλνκ±°λ μ€λ₯ μ½λ©μ μ€μΌ μ μμ΅λλ€.
λ€μ μ½λ©μ μ΄λ€ κ²°κ³Όλ₯Ό μ»μ κΉμ.
[μμ€]
#include
int main(int argc, char *argv[]) {
int a=1;
int b=1;
printf("a++ : %d %d %d %d %d\n",a++,a++,a++,a++,a++);
printf("++b : %d %d %d %d %d\n",++b,++b,++b,++b,++b);
return 0;
}
a,bλ₯Ό 5λ² μ°μμΌλ‘ μ¦κ° μμΌ°μ λ κ²°κ³Όκ° μ΄λ»κ² λμ¬κΉμ. νλ² λ©λͺ¨μ₯μλ€ μ«μλ₯Ό μ μ΄ λ³΄μΈμ.
[κ²°κ³Ό]
μ λ΅μ λ§μΆμ
¨λμ. printf()ν¨μλ μ€λ₯Έμͺ½μμ λΆν° μΌμͺ½ μμ΄λΌκ³ νμ£ . aμ μμ°¨μ μΌλ‘ μ¦κ°νλλ° μΌμͺ½ 첫λ²μ§Έ μμΌλ‘ μ«μλ₯Ό 보면 54321 μ΄λ κ² λμ
λκ² μ£ .
bμ κ²½μ°λ λ¨Όμ μ¦κ°νκΈ° λλ¬Έμ μΌμͺ½ μ΅μ’
첫λ²μ§Έ κ°μ 6μ΄ λ©λλ€. λμ
μ μμ°¨μ μΌλ‘ νλ©΄ μ λΆ 6μ κ°μ΄ λ©λλ€.
μ¦, μ°μ°μ ++μ΄ λ€μ λΆμΌλ©΄ λ¨Όμ μ²λ¦¬ μ°μ°μ λ¨Όμ λμ
νλ€μ 1μ μ¦κ°νλ κ±°κ³ ++μ΄ μμ λΆμΌλ©΄ 1μ μ¦κ° ν λ€μ λμ€μ μ²λ¦¬ μ°μ°μ λμ
ν λ€λ κ°λ
μ κ°μ§κ³ μμΌλ©΄ μ κ²°κ³Όκ° μ΄ν΄κ° λμ€ κ±°μμ.
μ¬λ¬κ°μ 볡ν©μ μ¦κ° μ°μ°μ λΆμ¬μ μ½λ©μ ν΄λ³΄μΈμ.
int a=1;
int s;
s = a++ + a++ + ++a;
sμ κ°μ λͺμΌκΉμ. λ§μΆ°λ³΄μΈμ. λ΅μ 7μ λλ€. μ! 7μΈμ§ λ§μΆμ λ€λ©΄ μ¦κ°μ°μ°μλ₯Ό μ΄ν΄νμ κ²λλ€. μ μ½λ©μ printf()ν¨μλ‘ sκ°μ μΆλ ₯νλ©΄ 7μ΄ κ·Έλ₯ λμ€μ§λ§ μ΄ 7μ΄ μ΄λ»κ² λμ€λμ§ λ©λͺ¨μ₯μλ€ μ μΌλ©΄μ νμ΄ λ³΄μΈμ.
7μ΄ λμ€λ μ΄μ λ₯Ό μλ©΄ μ¦κ°μ°μ°μλ₯Ό μ΄ν΄ νμ κ²λλ€.