위코드-TIL-2 (JS-Math expressions)

jin_sk·2020년 5월 26일
0

위코드

목록 보기
5/49

JS에서 수학적 계산

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. ++을 피연산자 앞에 사용하면 1을 더한 값을 바로 반환
y = 3;
3
++y;
4
y
4
  1. 피연산자 뒤에 ++을 사용하면 1을 더하기 전 값을 먼저 반환하고, 피연산자를 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
  1. newNum 변수에 num 변수를 할당해서 newNum에 1이 할당되었고,
  2. 그 후 num++가 실행되어 변수 num이 2가 되었다

풀어 쓰자면

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    
} 

수학식 계산 순서

컴퓨터의 수학계산법도 일반 계산법과 똑같다
* , / 가 우선 계산되며 +, -는 나중에 계산
그래서 계산식을 만들때 주의해서 작성해야 한다

0개의 댓글