들어가기전
- 코드에서 엔터는 그냥 작성자가 보기 편하라고 하는 것, 실제 구분 단위는
;
임 한줄로 쭉 써도 상관없음 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);