변수
프로그래밍에 있어서 변수라는 건 숫자, 문자와 같은 값들을 저장하는 공간을 의미한다. 모든 프로그램들은 수 많은 변수들로 구성되어 있다.
자료형(Data Type)
자료형이란 변수의 종류를 의미한다. 변수에 값을 담기 전에, 정수, 실수, 문자, 문자열 등은 어떤 값을 지닐 수 있는지 자료형을 미리 정해주어야 한다. C의 기본자료형 종류는 다음과 같다.
비트(bit)는 컴퓨터가 처리할 수 있는 데이터의 최소 단위로 0,1의 값을 가진다. 하나의 비트는 0,1밖에 표현할 수 없으므로, 값을 표현하기위해 비트 8개가 모인것이 바이트(byte)이다. 왜 하필 8개인지는 국제표준인듯하다. 0,1의 이진법으로 27각각 128개의 양수(0~127)와 128개의 음수(-1~128)까지 표현할수 있다. 마찬가지로 비트 16개가 모인 2byte에서는 215로 양수(0~32,767) 음수(-1~32,768)까지 표현할 수 있다.
자료형 | 명칭 | 크기 (byte) | 값의 범위 |
정수형 | char | 1byte | -128이상 +127이하 |
short | 2byte | -32,768이상 +32,767이하 | |
int | 4byte | -2,147,483,648이상 +2,147,483,647이하 |
|
long | 4byte | -2,147,483,648이상 +2,147,483,647이하 |
|
long long | 8byte | -9,223,372,036,854,775,808이상 +9,223,372,036,854,775,807이하 |
|
실수형 | float | 4byte | ±3.4x10^-37 ~ ±3.4x10^38 |
double | 8byte | ±1.7x10^-307 ~ ±3.4x10^308 | |
long double | 8byte 이상 | double이상의 표현범위 |
정수형에서 char은 정수와 문자를 표시할때 사용된다.
short, int, long, long long은 정수(숫자)를 나타낼때 사용된다.
구분 | 명칭 | 설명 | 출력 예(signed short) |
부호가 있는 변수 | signed | 기본(default) 형식 | -32,768 ~ 32,767 |
부호가 없는 변수 | unsigned | 음수를 표현 할 수 없고, 양수 값의 표현범위가 두배 정도 늘어남 | 0 ~ 65,535 |
정수형의 경우 signed,unsigned로 나뉘는데 signed(부호있는 변수)의 경우, 음수와 양수 둘다 표현이 가능하고
unsigned(부호 없는 변수)의 경우 양수만을 표현할 수 있는 대신에 범위가 약 2배 늘어난다.
실수형은 float , double, long double 순으로 좀 더 큰 숫자, 많은 소수점을 나타 낼 수 있다. 정수형과 다르게 unsigned가 존재 하지 않는다.
정수형 변수 출력
Hello world!를 출력할때는
printf("Hello world!"); 와 같이 ""안에 내용을 적으면 된다. 하지만 계속 내용이 바뀌는 변수를 출력할때는 형식 지정자를 이용해야 한다.
가장 많이 쓰이는것과 내가 궁금했던거 몇가지를 추가했다.
C언어 형식 지정자(C language format specifier)
자료형 | 형식지정자 | 설명 | 예시 | 영어 : 뜻 |
int | %d | 부호 있는 10진 정수 | 5 | decimal : 10진수 |
unsigned int | %u | 부호 없는 10진 정수 | 5 | |
float,double | %f | 부호 있는 10진 실수 | 5.52 | |
char | %c | 단일문자 및 부호 있는 10진정수 |
c | |
unsigned char | %hhu | 부호 없는 10진 정수 | 5 | |
char[] (char배열) |
%s | 문자열 | computer | |
int | %o | octal : 8진수 | ||
int | %x | hexadecimal : 16진수 |
컴퓨터 언어에는 영어가 정말 많이 들어간다.
알수 없는 기호로 사람과 컴퓨터간의 약속을 정해놓았지만 알고보면 영어가 베이스이다.
*integer : 정수
*octal : 8진수
*decimal : 10진수
*hexadecimal : 16진수
C언어에서 'a의 값은 50입니다'라는 문구를 출력하기 위한 예제는 다음과 같다.
#include<stdio.h>
int main()
{
int a;
a = 50;
printf("a의 값은 %d 입니다." , a);
return 0;
}
출처 입력
이스케이프 시퀀스
이스케이프 시퀀스는 \(원화 혹은 역슬래시형 기호)와 특정 문자를 결합하여 c언어 특성상 표현할 수 없는 기능이나 문자를 표시해주는 문자를 말한다.
\n을 입력함으로써 줄바꿈을 실행할 수 있다.
\t를 입력함으로써 tab키를 한번 누른 효과를 볼 수 있다.
번외 - Java에서의 자료형
자료형 | 명칭 | byte | 값(예) |
정수형 |
short | ||
int | 4byte | 0,3,5,,.21억 | |
long | 8byte | 10.0, 5.8, 0.0 | |
실수형 | float | 4byte | |
double | 8byte | ||
논리형 | boolean | 1byte | true, false |
문자형 | char | 2byte | 'a','b','c' |
문자열 | string | "abc", "한글" |
*중요 : java에서 문자형은 c에서와 달리 2byte를 차지한다.
자바에서는 정수형으로 int를 기본형, 실수형으로 double을 기본형으로 사용한다.
나머지는 복잡하니 그다지 중요하지 않는듯하다.
*boolean : 참/거짓
운영체제는 32비트/64비트 운영체제가 존재한다.
간단히 말해, 32비트 운영체제는 2^32데이터를 한번에 처리할 수 있는 능력을 가진 운영체제이고, 2^64데이터를 한번에 처리할 수 있는 운영체제이다.