언어/C

[코딩자율학습] 2일차 변수와 상수

홍시_코딩기록 2024. 3. 5. 22:25

📌 변수

#include <stdio.h>

int main(void) {
	printf("hello world\\n");
	return 0;
}
  • C언어로 코드를 작성하면 이를 컴퓨터가 알아들을 수 있는 기계어로 번역하는 과정이 필요함. 이를 컴파일이라고 하고, 이 역할을 하는 프로그램을 컴파일러라고 함. 비주얼 스튜디오가 컴파일러 역할
  • #include는 전처리기 지시문 이라고 함.
  • 코드를 작성하는 사람은 컴파일에 필요한 것들을 컴파일러에게 알려줘야 함. 이때 사용하는 것이 전처리기 지시문
  • #include는 ‘지정한 파일을 코드에 포함하라’라는 뜻.
  • stdio.h는 표준 입출력 함수를 포함한 헤더파일 <>나 “”안에 사용
  • stdio.h파일에는 앞에서 사용한 printf()함수나 scanf()함수 등 입출력 관련 함수들이 선언되어 있어서 예제 코드처럼 추가 작업 없이 printf() 함수를 바로 사용 가능함.
  • int main(void) {}는 main이라는 이름의 함수 정의
  • 앞에 붙은 int는 main() 함수가 반환하는 값의 자료형. int는 정수형을 나타내서 main() 함수가 반환하는 값이 정수라는 의미.
  • void를 넣으면 전달받는 값이 없다는 뜻 (일단 이렇게 알아두기)

** 변수: 변하는 수/ 상수: 변하지 않는 수

 

 

정수형 변수

int age = 20;
  • 나이는 해마다 변하니까 상수가 아니라 변수
  • int는 자료형을 나타냄. 자료형은 데이터의 형태 (정수형, 실수형, 문자형 등)
  • int는 이 중에서 정수형에 속함.

⚠️ 변수명 작성 규칙

  1. 알파벳, 숫자, 언더바를 사용, 알파벳은 대소문자 구분
  2. 첫글자는 숫자로 시작x, 변수명에 공백 x
  3. 키워드로 지정된 단어 사용 x (키워드 예_ int 등) </aside>

변수 선언과 초기화

let age; //변수 선언
age = 20; //변수 초기화

let age = 20 //변수 선언과 동시에 초기화

 

변수 사용하기

#include <stdio.h>

int main(void) {
	int age = 20;
	printf("%d\\n", age);
	return 0;
}
  • %d(서식지정자) 는 정수형 값을 출력하라는 의미 | \n은 한 줄 띄우기임.
  • , 쉼표 다음에 있는 값이 %d 자리에 들어가서 출력됨.
  • 서식지정자의 유형은 출력할 값의 자료형에 따라 달라짐. 여기선 age 값이 정수 20 이라서 정수형을 나타내는 서식 지정자 %d를 넣음.
  • 값이 여러개라면? → 서식 지정자를 출력할 값의 개수만큼 넣고 띄어 쓰면 됨.

 

주요 서식 지정자

자료형 서식 지정자 설명

int %d 값이 정수일 때
float %.nf 값이 실수일 때, n은 출력할 소수점 이하 자릿수. n+ 1 자리에서 반올림
double %.nlf 값이 실수일 때, n은 출력할 소수점 이하 자릿수. n + 1 자리에서 반올림
char %c 값이 문자일 때
  %s 값이 문자열일 때
  • %d 뒤에는 \n을 넣어 줄바꿈을 함. 필수는 아니지만 구분되게 넣는게 좋음.
  • 변수는 저장된 값이 바뀔 수 있음.
  • 선언한 변수에 다시 값을 넣을 때는 자료형을 넣지 않아도 됨.

 

주석 처리 방법

  • 한줄은 // 여러줄은 /**/
  • 주석 설정: ctrl + k + c // 주석 해제: ctrl + k , u

 

실수형 변수

  • 46.5 → 이렇게 소수점이 붙는 수는 실수
float 변수명 = 값f;
  • 실수를 나타낼 때는 자료형에 float를 씀.
  • 자료형에 float를 쓸 때는 항상 값 뒤에 f를 붙임.

 

 

#include <stdio.h>

int main(void) {
	float f = 46.5f;
	printf("%f\\n", f);
	return 0;
}

//실행결과 46.500000

변수에는 46.5 넣었는데 왜 46.500000 나옴?

  • printf() 함수 때문.
  • printf()함수는 실수형 변수의 값을 출력할 때 기본으로 소수점 이하 여섯째 자리까지 출력함.

 

 

불필요한 0없이 원하는 자릿수까지만 보려면?

#include <stdio.h>

int main(void) {
	float f = 46.5f;
	printf("%.2f\\n", f); 

	double d = 4.428;
	printf("%.2lf\\n", d);
	return 0;
}

//실행결과 46.50  4.43
  • .2는 값을 소수점 이하 셋째 자리에서 반올림해서 소수점 이하 둘째 자리까지만 출력
  • double도 사용가능.
  • double을 사용할 때는 값 뒤에 f를 붙이지 않음/ 서식 지정자에 f 대신 lf
  • lf 앞에 넣는 자릿수 n은 n+1번째 자리에서 반올림해서 n번째 자리까지 출력하라는 의미.
  •  
더보기

⚠️ float형 값에 f를 붙이는 이유 float, double 둘 다 실수형인데 float형의 변수에 값을 저장할 때만 뒤에 f를 붙임. 저장하는 값이 float형이라는 것을 알리기 위해서임. float는 4바이트, double은 8바이트의 공간을 사용함. 값에 f를 붙이지 않으면 컴퓨터는 값을 double로 자동 인식해 변수 크기인 4바이트가 초과되는 값은 잘린다는 경고 메세지를 출력함.

 

%.nf n은 출력할 소수점 이하 자릿수, n+1번째 자리에서 반올림.

%.nf n은 출력할 소수점 이하 자릿수, n+1번째 자리에서 반올림.
%.nlf n은 출력할 소수점 이하 자릿수, n+1번째 자리에서 반올림.

 

상수

변하지 않는 수

#include <stdio.h>

int main(void) {
	const YEAR = 1972;
	printf("C언어가 발표된 연도: %d\\n", YEAR);
	return 0;
}

//실행 결과 -> c언어가 발표된 연도 : 1972
  • const로 선언하면 이후에는 값을 변경할 수 없음.