운영체제: windows11
컴파일러, 에디터: visual studio 2022
코드
/* if 문 공부하려다가 간단하게 사칙연산*/
#include <stdio.h>
int main(){
double celsius'
double fahrenheit;
celsius = 17.1;
fahrenheit = celsius * (9/5) +32;
printf(celsius);
printf(fahrenheit);
return 0;
}
이렇게 코드를 적으면 printf 안에 변수에 에러 표시가 뜬다.
argument of type "double" is incompatible with parameter of type "const char *const"
printf 문을 쓰는 족족 오류가 나는 것을 확인했다. 너무 기초적인건데 모르는 것 같아서 좀 부끄럽다.
printf 문에 변수를 쓰고싶으면 큰따옴표 안에 형식지정자 %d, %f, %lf 등 알맞은 형식을 지정해주고, 큰따옴표를 닫은 뒤에 , (콤마)를 하고나서 넣어줄 변수들을 적어준다.
scanf 의 경우엔 scanf_s("%lf %lf", &i, &j); 와 같이 뒤에 들어가는 변수가 주소를 뜻하는 연산자 &를 앞에 두고 들어온다.
전체 명령어
/* if 문 이란? */
#include <stdio.h>
int main() {
double i, j;
printf("나누고 싶은 두 정수를 입력하세요 (띄어쓰기로 구분): ");
scanf_s("%lf %lf", &i, &j);
if (j == 0) {
printf("0으로는 나눌 수가 없습니다.\n");
return 0;
}
printf("1번: lf로 선언한 변수들로 나눠주기.\n %lf 를 %lf 로 나눈 결과값 : %lf\n", i, j, i / j);
printf("2번: 다음의 코드 결과를 보고 원인을 분석해보기.\n");
printf(
" float으로 선언한 3 / 7의 결과 조회하기.\n");
printf("%f \n", 3 / 7);
printf(" 왜 이런 결과가 생기는 걸까?\n\n1번의 경우 나누는 양 변수는 double로 선언되었다. 나눗셈을 직접 %.0lf/%.0lf로 적어주는게 아닌, double 로 선언했던 변수에 %lf를 넣고, double로 선언한 변수에 %lf를 넣은 것은 double로 살려두다보다.\n",i,j,i,j);
printf("반대로, 2번의 경우, 그냥 정수를 가져와 나눴으니, 연산의 결과도 정수로 내기로 마음먹은거다.");
printf("\n\n그렇다면, double 변수를 선언하고 5/9로 할당해주면 그 값은 소수가 나올까 아니면 0이 나올까?\n");
printf("내 예상인데, 2번에서 float 형을 선언하고 5/8를 해준 것과 같이 0이 나올 것이다.");
i = 5 / 9;
printf("\n%lf\n\n", i);
double celsius;
double fahrenheit;
celsius = 17.1;
fahrenheit = celsius * (9 / 5) + 32;
printf("celsius degree : %lf\n", celsius);
printf("fahrenheit degree : %lf", fahrenheit);
return 0;
}