JS 코드에 숫자와 연산자를 사용해서 수학 계산을 할 수 있다
let a = 1.3;
let b = 2;
let c = -10;
console.log(a+b); // 3.3
console.log(b*c/10); // -2
console.log(a+10); // 11.3
console.log(450-30); // 420
console.log(a+10*b*b/2+3); // 24.3
++
: 변수 값을 1씩 증가
++
을 피연산자 앞에 사용하면 1을 더한 값을 바로 반환 y = 3;
3
++y;
4
y
4
++
을 사용하면 1을 더하기 전 값을 먼저 반환하고, 피연산자를 1을 더한 값으로 만든다.x = 3;
3
x++;
3
x
4
--
: 변수 값을 1씩 감소
위와 동일하다!
헷갈리니 다시 정리하자면
++x => x의 값을 증가시키고 나서 x를 반환
x++ = > x의 값을 반환하고 나서 x 값 증가
let num = 1;
let newNum = num++;
console.log(num); // 결과값 : 2
console.log(newNum); // 결과값 : 1
풀어 쓰자면
let num = 1;
let newNum = num;
num++;
newNum에도 2를 할당하고 싶다면
let num = 1;
let newNum = ++num;
console.log(num); // 결과값 : 2
console.log(newNum); // 결과값 : 2
newNum에 1을 더한 값을 바로 반환해야 하므로 ++연산자를 변수 앞에 사용
플어쓰면
let num = 1;
num++;
let newNum = num;
반환할때 전위, 후위처리 방식의 차이에 의한 임시변수를 처리하는 만큼의 차이가 있다
<참고만하기>
c에서 어셈을 돌려 확인해보면
7: return c++;
01341394 mov eax,dword ptr [c]
01341397 mov dword ptr [ebp-0D0h],eax
0134139D mov ecx,dword ptr [c]
013413A0 add ecx,1
013413A3 mov dword ptr [c],ecx
013413A6 mov eax,dword ptr [ebp-0D0h]
14: return ++c;
01341804 mov eax,dword ptr [c]
01341807 add eax,1
0134180A mov dword ptr [c],eax
0134180D mov eax,dword ptr [c]
잘은 모르겠지만 차이가 존재하긴 한다...
요새는 컴파일러가 좋아져서 큰차이 없다고함
void main(void)
{
00F01380 push ebp
00F01381 mov ebp,esp
00F01383 sub esp,0CCh
00F01389 push ebx
00F0138A push esi
00F0138B push edi
00F0138C lea edi,[ebp-0CCh]
00F01392 mov ecx,33h
00F01397 mov eax,0CCCCCCCCh
00F0139C rep stos dword ptr es:[edi]
int a = 0;
00F0139E mov dword ptr [a],0
++a;
00F013A5 mov eax,dword ptr [a]
00F013A8 add eax,1
00F013AB mov dword ptr [a],eax
a++;
00F013AE mov eax,dword ptr [a]
00F013B1 add eax,1
00F013B4 mov dword ptr [a],eax
}
컴퓨터의 수학계산법도 일반 계산법과 똑같다
*
, /
가 우선 계산되며 +
, -
는 나중에 계산
그래서 계산식을 만들때 주의해서 작성해야 한다