문자 자료형 / 상수 / 입력( scanf ) / 증감 연산자 / 자료형 확장, 축소에 대해서 정리한다.
문자 자료형
- char를 이용해서 하나의 문자를 저장가능
( 부호없는 char는 보통 바이트 단위 데이터를 저장한다 )
- C언어에서는 작은따옴표를 이용해서 문자 하나를 묶는다.
( 작은따옴표를 이용해서 문자열을 묶을수는 없다 )
- char에 문자를 저장할 때는 문자 자체를 저장하지 않고 문자에 해당하는 정수값(ASCII)으로 저장된다.
( 서식지정자 %d를 이용해서 char 자료형 변수에 저장된 값을 불러오면 ASCII 코드의 10진수 값이 나온다 )
- char 문자에 있는 값을 서식지정자 %x를 이용해 16진수로 불러올때는 10진수와 헷갈리지 않도록
서식지정자 앞에 0x를 붙여준다.
( 8진수의 경우에는 서식지정자 앞에 0을 붙여준다 )
문자로 연산하기
- 문자는 ASCII 코드 규칙에 의해 정수로 저장되기 때문에 정수처럼 덧셈, 뺄셈 등이 가능하다.
제어 문자 사용하기
- 숫자나 알파벳 이외에도 제어 문자도 저장해서 사용할 수 있다.
상수
- 변하지 않는 값
- 값이 의도하지 않게 바뀌는 것을 방지하기 위해 상수를 사용
- 'const 자료형 변수명 = 값' 형식으로 사용한다.
- 선언과 동시에 값을 초기화 해줘야한다.
- 정수나 실수 뒤에 접미사를 붙여서 크기를 명시해줄 수 있다.
입력( scanf )
- 콘솔에서 입력하는 방식을 표준 입력(standard input, stdin), 출력하는 방식을 표준 출력(standard output,stdout)
- scanf(서식지정자, 변수의 주소)
( <stdio.h> 파일안에 선언되어 있다 )
* 변수의 주소를 입력할때는 앞에 &를 붙여준다.
- visual studio에서만 #define _CRT_SECURE_NO_WARNINGS를 정의해줘야 한다.
( scanf의 경우 입력값의 길이를 설정할수 없기 때문에 보안에 취약한 부분이 있어 visual studio에서는 에러가 발생한다 )
* scanf 보안 경고로 인한 컴파일 에러 방지를 위해 #define _CRT_SECURE_NO_WARNINGS를 정의해준다.
- 한번에 여러개를 입력 받을때는 입력 받을만큼 서식지정자 갯수를 적어주고 scanf()안에 변수의 주소를 ,로 구분한다.
- scanf()에서 입력받는 변수의 자료형을 double로 선언했으면 서식지정자를 %lf로 주고
long double로 선언했다면 %Lf를 적어줘야한다.
- scanf() 대신에 getchar() 함수를 이용해서 문자를 입력받고 putchar() 함수를 이용해서 문자를 화면에 출력할 수 있다.
증감 연산자 ( ++, -- )
- ++는 값을 1 증가시키는 연산자이고 --는 값을 1 감소시키는 연산자
- 증감 연산자는 변수 앞이나 뒤에 붙여서 사용가능하다.
- 실수에서 증감연산자를 사용하면 정수 부분만 영향을 미치고 소수점 자리에는 영향을 미치지지 않는다.
- 증감 연산자에서 가장 큰 특징은 증감 연산자를 사용한 변수를 다른 변수에 저장할때 나타난다.
( 예를 들어서 num1이라는 변수를 증가 연산자를 이용해서 num3이라는 변수에 저장하려고 할때
후위(postfix) 연산자를 사용했다면 num3에는 num1의 현재 값이 들어가고 num1은 1이 증가되는 결과가 나온다 )
* 전위(prefix) 연산자를 사용하면 저장하려는 변수와 증감 연산자를 사용한 변수 모두 같은 값을 가지게 된다.
* 증감 연산자의 이러한 특징은 prinf()를 이용해서 출력할때도 마찬가지로 적용된다.
나머지 연산
- % 연산자를 이용해서 나머지를 구하는데 사용
- 특정수의 배수인지를 확인할때 자주 사용한다.
자료형 확장( type promotion )
- 서로 다른 자료형끼리 연산을 할 때는 정해진 규칙을 따른다.
( 예를 들어서 정수와 실수를 함께 연산하면 실수가 정수보다 표현범위가 넓기 때문에 결과가 실수로 나오게 된다 )
- 표현 범위가 넓은 쪽으로 자료형이 확장된다.
- 자료형 종류는 같지만 자료형의 크기가 서로 다르다면 크기가 큰쪽으로 형 확장이 일어난다.
( 예를 들면 int보다 long long이 자료형 크기가 크기 때문에 long long으로 변환된다 )
- 컴파일러에서 암시적 형 변환(implicit type conversion)을 한다.
자료형 축소( type demotion )
- 자료형의 크기가 작은쪽( 표현범위가 좁은 쪽)으로 변환되는 것을 형 축소
- 형 축소가 일어나면 값의 손실이 일어난다.
'프로그래밍 > C' 카테고리의 다른 글
[c언어] 반복문( for, while, do.. while ) / 반복문 제어( break, continue ) (0) | 2017.10.13 |
---|---|
[c언어] 조건문( if ) / 비교 연산자, 삼항 연산자 / 논리 연산자 / bool 자료형 / 비트 연산자 / 연산자 우선순위 / switch문 (0) | 2017.10.12 |
[C언어] 정수 자료형( 크기 및 범위, 최솟값과 최댓값 표현, 오버플로우, 언더플로우, 크기가 표시된 정수 자료형 ) / 실수 자료형( 최솟값과 최댓값 표현, 오버플로우와 언더플로우 ) / 자료형 .. (0) | 2017.10.09 |
[C언어] 기본문법 / 변수 (0) | 2017.10.09 |
[C 언어] 함수, 배열, 포인터 (0) | 2017.06.02 |
댓글