부가 연산자, 복합 부가 연산자, printf, scanf, 제어문
부가 연산자와 복합 부가 연산자.
- C 언어에서 단순히 변수에 값을 부가할 때는 부가 연산자(=)를 사용한다.
복합부가 연산 |
부가 연산 |
x += 5; |
x = x + 5; |
x -= 5; |
x = x - 5; |
x %= 5; |
x = x % 5; |
x *= 5; |
x = x * 5; |
캐스트(cast) 연산자 - 형 변환(type)
⇒ (자료형) 수식
// 명시적 형 변환이 필요한 산술식의 계산 프로그램
#include <stdio.h>
int main()
{
int intA = 14, intB = 3;
float floatC = 0;
floatC = intA / intB; // 우선 int형으로 나눈 후 그 결과를 float 형으로 바꾸게 되므로 14/3의 결과인 4를 float 형으로 바꾼다. 따라서 결과는 4.000000가 된다.
printf("%f\n", floatC);
floatC = (float) intA / intB; // casting(float) 뒤에 오는 형(int A)를 float 형으로 바꾸어 준다. 따라서 14.0/3이 계산된다. 따라서 결과는 4.666667이 된다.
printf("%f\n", floatC);
return 0;
}
- printf() 함수
형식지정자
%d |
출력 값을 부호가 있는 10진수 정수(decimal)로 바꾼다. |
%f |
출력 값을 실수형(float)으로 바꾼다. |
%c |
출력 값을 문자형(char)으로 바꾼다. |
%s |
출력 값을 문자열형(string)으로 바꾼다. |
%o |
출력 값을 8진수로 바꾼다. |
%x |
출력 값을 16진수로 바꾼다. |
- scanf() 함수
⇒ 키보드로 입력된 값을 형식지정자에 맞추어 주소연산자 다음에 오는 변수에 넣으라는 뜻을 가진다.
- 주소 연산자(& - ampersand), scanf 함수 내에 변수 앞에 붙인다.(문자열 입력일 경우 제외)
- scanf() 함수가 키보드로부터 입력 값을 받을 때는 사용자가 <엔터 키>를 누르기 전까지는 입력 값을 읽지 않는다. 이것은 프로그램과 키보드 사이에 일시적으로 입력 값을 저장하는 버퍼라고 부르는 임시 기억 공간이 있기 때문이다.
- scanf() 함수가 여러 개의 입력 값을 동시에 읽는 경우에는 입력 값 사이에 ‘단락문자’를 넣어서 분리한다. 단락문자로는 위에서 사용된 공백문자, 개행문자, 탭문자 등을 사용할 수 있다.
- scanf() 함수를 이용하면 읽는 문자의 개수를 정할 수 있다. 형식 지정자를 이용하여 %5s를 명시하면 scanf() 함수는 문자의 내용에 관계없이 5문자만 읽는다.
- scanf() 함수와 printf() 함수에서 사용되는 형식 지정자 비교
printf() |
scanf() |
형식 |
%c |
%c |
단일 문자(1byte공간) (글자1개만 입력받는다.) |
%s |
%s |
문자열 |
%d |
%d |
부호 있는 정수 |
%i |
|
부호 있는 정수 |
|
%i |
10진수, 8진수, 16진수 |
%f |
%f |
실수(십진표기) |
%c |
%e |
실수(과학적 표기법) |
%g |
|
실수 |
%u |
%u |
부호 없는 정수 |
%x |
%x |
부호 없는 16진수 |
%o |
%o |
부호 없는 8진수 |
%p |
|
16진수 메모리 주소 |
- printf("%p\n",255); //16진수 메모리 주소. (반드시 8자리로 나온다.) %08X와 같다.
#include <stdio.h>
int main()
{
printf("%p\n",255); // 255의 16진수 메모리 주소 출력 (000000FF)
printf("%08X\n",255); // 8자리로 255의 16진수 메모리 주소 출력 (000000FF)
return 0;
}
제어문
#include<stdio.h>
int main()
{
int a;
int b;
a= 15;
{
b=23;
printf("a+b=%d and a-b=%d\n",a+b,a-b);
}
{
int b=10; // 앞에 선언한 b와는 다른 변수이다. 해당 중괄호 안에서만 값이 선언되어 있다. 즉, 중괄호가 끝나면 사라진다.
printf("%d\n",b); // b=10이 출력된다.
printf("%d\n",a); // a=15의 값이 출력된다.
}
printf("%d\n",b); // b=23의 값이 출력된다.
return 0;
}
- 중괄호 안에 여러 개의 중괄호를 사용할 수 있다.(그리고 영역이 확실히 구분된다.)
- 중괄호는 영역 표시가 확실하다. 세 번째 중괄호 범위 안에서 int b=10; 의 선언은 해당 중괄호 안에서만 값이 유지되며, 해당 중괄호가 닫힐 때 그 값이 사라진다. 반대로 두 번째 중괄호의 b=23; 의 경우는 최상위 중괄호에서 선언된 int b의 값을 불러와 사용했기에 b=23이란 값이 그대로 유지된다.
- 다시 말하면 세 번째 중괄호의 int b=10; 이라는 선언은 최상위의 int a;, int b; 와 다르게 int b가 한 번 더 생긴 것과 같다. 즉 변수가 잠시 3개가 된 것이다.(변수의 지역이 다르므로 같은 이름도 허용되었지만 두 int b는 다른 변수이다. - 이것을 최상위의 int a;, int b;를 전역변수, 중간에 잠시 나타난 int b;를 지역변수라 한다.)
- 만약, 3번째 중괄호 안에 변수 선언을 새로 하지 않았다면, 전역변수의 값이 그대로 출력 된다.
'내장형 하드웨어 > C언어' 카테고리의 다른 글
반복문 연습, getchar, putchar (0) | 2011.04.05 |
---|---|
if문, 다중 if문, switch 문, 흐름도 (flow chart) (1) | 2011.04.04 |
C 언어의 연산자 - 산술, 비교, 논리 연산자 (0) | 2011.04.04 |
문자, 문자열, ASCII code (확장 아스키) (0) | 2011.04.04 |
if문, 다중 if문, switch 문, 흐름도 (flow chart) (0) | 2011.04.04 |