4. 연산자

P4·2023년 6월 9일
0
post-thumbnail

연산자

들어가기전

  • 코드에서 엔터는 그냥 작성자가 보기 편하라고 하는 것, 실제 구분 단위는 ;임 한줄로 쭉 써도 상관없음 min.js같이
  • 대부분 그냥 수학에서 쓰는 것과 똑같으나 % 모듈러스 연산자라는게 있음 (나머지)

  • ++, --도 있음, =은 대입연산자

  • 연산자의 우선순위는 =보다 +이 빠름, 만약에 =이 더 빨랐으면 data = 10 + 10;에서 data는 10이 될거임

  • 대입연산자가 없다면 ex) data + 20 이렇게 그냥 쓰면 CPU가 연산해서 register memory에 넣어두긴 할텐데 그대로 끝임, 나중에 휘발됨


나누기, 모듈러스 (/, %)

  • 연산을 당하는 입장 : 피연산자

  • 만약에 피연산자가 실수라면? 3.3333... 이렇게 계속 내려갈거임

  • 그런데 정수끼리 연산하면 몫과 나머지가 정수로 나오고 끝남

  • 실수의 나눗셈에서 나머지는 존재하지 않음, 어디까지 나누고 나머지를 정할지가 애매함
    (실수끼리 나눴는데 모듈러스 연산자를 쓰면 컴파일 오류가 남)

  • 따라서 나머지 연산자는 피연산자가 모두 정수여야 함


실수끼리의 나눗셈

  • 만약에 실수끼리 나누면 ex) 10. / 3.; 이러면 int로 자동변환되는 과정에서 데이터 손실 오류가 뜸 (소수점이 잘릴 수 있다는 경고)

  • 따라서 (int)(10. / 3.); 이렇게 써줘야함

  • 참고로 뒤에 12.12f 이렇게 f가 붙으면 float, 10. 이렇게 .만 붙으면 double임 // 10.f이 되면 float이 됨

double double_data = (10. / 3.);
float float_data = (10. / 3.);

printf("%.15lf\n", double_data);
printf("%.15f", float_data);
  • 이렇게 실행하면 오차를 눈으로 확인할 수 있음
profile
지식을 담습니다.

0개의 댓글