C

C언어를 가르칩니다.

C C언어를 가르칩니다.

사칙연산

사칙연산에 필요한 산술 연산자를 알아봅니다.

사칙연산

여기서는 사칙연산, 즉 덧셈 뺄셈 곱셈 나눗셈을 하는 데 필요한 연산자를 알아봅니다.

단항 연산자

정의

단항 연산자란 연산 대상(Operand, 피연산자)이 하나만 필요한 연산자를 뜻합니다.

종류

- 연산자: 부호 바꾸기
//- 연산자: 부호를 바꿉니다. unsigned 변수에는 사용할 수 없습니다.
int a=2;
printf("%d\n",a); //2가 출력됩니다.
printf("%d\n",-a); //-2가 출력됩니다. a의 값은 바뀌지 않습니다.
a=-a; //-a를 a에 대입합니다.
printf("%d\n",a); //-2가 출력됩니다.
a=-a; //-a를 a에 대입합니다.
printf("%d\n",a); //2가 출력됩니다.
++, -- 연산자: 변수 값 1 증가/감소
//++연산자, -- 연산자: 해당 변수의 값을 1 증가시키거나 감소시킵니다.
// 해당 변수의 앞에 오느냐, 뒤에 오느냐에 따라 연산 순서가 다릅니다.

int a=5;
a--; //a의 값을 1 감소시킵니다.
printf("%d\n",a); //4를 출력합니다.
=-a; //a의 값을 1 감소시킵니다.
printf("%d\n",a); //3을 출력합니다.
a++; //a의 값을 1 증가시킵니다.
printf("%d\n",a); //4를 출력합니다.
++a; //a의 값을 1 증가시킵니다.
printf("%d\n",a); //5를 출력하빈다.

//여기서부터 이해하기 좀 어려울 수 있습니다.
a=10; //a를 10으로 초기화합니다.
printf("%d\n",a++); //10이 출력됩니다.
printf("%d\n",a); //11이 출력됩니다.
printf("%d\n",++a); //12가 출력됩니다.
printf("%d\n",a); //12가 출력됩니다.
printf("%d\n",a--); //12가 출력됩니다.
printf("%d\n",a); //11이 출력됩니다.
printf("%d\n",--a); //10이 출력됩니다.
printf("%d\n",a); //10이 출력됩니다.

++와 --와 같은 연산자가 변수의 '앞'에 올 경우, 변수의 값에 1이 더해지고 난 뒤에 그 변수가 사용됩니다. 가령 다음과 같은 코드에서는,

int a=1;
printf("%d\n",a++);
printf("%d\n",a);

이런 일이 벌어집니다.

  1. int형 변수 a에 1을 할당.
  2. a 출력.
  3. a의 값을 1 증가시킴.
  4. a 출력.

반면 다음과 같은 코드에서는,

int a=1;
printf("%d\n",++a);
printf("%d\n",a);

이런 일이 벌어집니다.

  1. int형 변수 a에 1을 할당.
  2. a의 값을 1 증가시킴.
  3. a 출력.
  4. a 출력.

--연산자도 마찬가지입니다.

이항 연산자

정의

연산 대상이 2개 필요한 연산자를 말합니다. 그런데 정식 명칭이 이항 연산자가 맞는지 잘 모르겠습니다. 뭐, 별로 중요하지 않습니다.

종류

+ : 덧셈
printf("%d\n",3+2);
int a=3, b=-9;
printf("%d\n",a+b);
char A='A';
int c=10;
printf("%c\n", A+c);
- : 뺄셈
printf("%d\n",21-5);
int a=8;
int b=9-a;
printf("%d\n",a-b);
char A='C';
int c=2;
printf("%c\n",A-c);
* : 곱셈
printf("%d\n", 2*2*2*2*2*2*2*2*2*2);
int a=2;
int b=a*a;
printf("%d\n",a*b);
char a='%';
printf("%d\n",a*2);
/ : 나눗셈
printf("%d\n",6/3);
printf("%d\n",5/3); //버림
int a=43, b=95;
printf("%d\n",a/b); //버림
double a=43.0, b=95.0;
printf("%f\n",a/b);
C는 정수 나눗셈을 할 때 나오는 소수부는 무조건 버림을 원칙으로 합니다. 소수부를 표시하려면 double 또는 float형을 써야 합니다.
% : 나머지
printf("%d\n",5%3);
printf("%d\n",6%3);
int a=10000, b=345;
printf("%d\n",a%b);
printf("%d\n",5);
= : 대입
int a=5;
a=a+1; //a에 1을 더한 값을 다시 a에 대입합니다. 즉, a 변수의 값이 1 증가됩니다.
char b='A';

오른쪽에 있는 값을 왼쪽(lvalue)에 대입한다는 개념을 이해하는 것이 중요합니다.

+= -= /= *= %= : 연산과 대입 같이 하기
int a=5;
int b=3;

// 같은 효과를 내는 줄끼리 묶었습니다. 변수 값이 바뀌는 것은 무시하도록 합시다.

a+=b; // a의 값을 b만큼 증가시킵니다.
a=a+b; // a에 b를 더한 값을 a에 대입합니다.

a-=b; // a의 값을 b만큼 감소시킵니다..
a=a-b; // a에서 b를 뺀 값을 a에 대입합니다.

a*=b; // a의 값을 b배로 만듭니다.
a=a*b; // a에 b를 곱한 값을 a에 대입합니다.

a/=b; // a를 b로 나눕니다.
a=a/b; // a를 b로 나눈 값을 a에 대입합니다. 

a%=b; // a를 b로 나눈 나머지로 만듭니다.
a=a%b; //a를 b로 나눈 나머지를 a에 대입합니다.

연산과 대입을 같이 하는 연산자에 익숙해집시다.

댓글

댓글 본문
작성자
비밀번호
버전 관리
truelight
현재 버전
선택 버전
graphittie 자세히 보기