[C] 6. 연산자, 표현식, 문장, 형변환

Taeil Nam·2022년 6월 10일
0

C

목록 보기
6/18
post-thumbnail

1. 기본 연산자(Operator)

"="

  • 대입 연산자.
  • 오른쪽 값을 왼쪽 값에 대입시킨다는 뜻.
  • 왼쪽과 오른쪽 값이 같다는 뜻이 아님.

"+"

  • 더하기.

"-"

  • 빼기.

"*"

  • 곱하기.

"/"

  • 나누기.
  • 1/3 = 1 나누기 3 = 3분의 1.
  • 정수끼리 나누면, 소수점 부분이 버려짐(truncation).
💡 실수를 담을 수 있는 memory 공간이 없기 때문
#include <stdio.h>

int main()
{
    printf("7 / 2 = %d", 7 / 2);	// 3.5가 출력되어야 하지만 3으로 출력됨.

    return 0;
}

"%"

  • 나머지 연산자.
  • 서로 다른 부호간 나머지 연산시, 결과 값의 부호는 앞의 값의 부호를 따름.
#include <stdio.h>

int main()
{
    printf("13 %% 5 = %d\n", 13 % 5);		// 결과 = 3.
    printf("13 %% -5 = %d\n", 13 % -5);		// 결과 = 3. (앞의 값 13이 양수라서 결과도 양수)
    printf("-13 %% 5 = %d\n", -13 % 5);		// 결과 = -3.(앞의 값 13이 음수라서 결과도 음수)

    return 0;
}

2. 증감 연산자

"++"

  • 1 을 더함.
  • 변수 앞에 있는 경우, 1을 먼저 더하고 그 뒤에 다른 연산을 수행. (전위)
  • 변수 뒤에 있는 경우, 먼저 다른 연산을 수행하고 1을 나중에 더함. (후위)
#include <stdio.h>

int main()
{
  int a = 0;
  
  a++; 	// 전위, a = a + 1 or a += 1 와 동일;
  printf("%d\n", a);

  ++a; 	// 후위, a = a + 1 or a += 1 와 동일;
  printf("%d\n", a);

  return 0;
}

"--"

  • 1 을 뺌.
  • 변수 앞에 있는 경우, 1을 먼저 빼고 그 뒤에 다른 연산을 수행. (전위)
  • 변수 뒤에 있는 경우, 먼저 다른 연산을 수행하고 1을 나중에 뺌. (후위)
#include <stdio.h>

int main()
{
  int a = 0;
  
  a--; 	// 전위, a = a - 1 or a -= 1 와 동일;
  printf("%d\n", a);

  --a; 	// 후위, a = a - 1 or a -= 1 와 동일;
  printf("%d\n", a);

  return 0;
}

3. Object, L-value, R-value

Object

  • memory에 저장되어 있는 데이터를 말함.
  • 추후 객체 지향 언어에서 다루게 되는 개념.

L-value(object locator value)

  • 값을 저장할 수 있는 곳. (memory 공간)

R-value(value of an expression)

  • 값.
#include <stdio.h>

int main()
{
    int i;		// 변수 i 에 저장되어 있는 정수 데이터 = object.
    i = 1024;	// 변수 i = L-value, 1024 = R-value.
    i = i + 1;

    return 0;
}

4. 표현식(Expressions)과 문장(Statements)

표현식

  • 수학에서의 수식과 비슷한 개념.
  • 값을 계산하기 위해 사용하는 표현.
    Ex) q = 5 * 2;
  • 표현식의 끝을 표현하는 기호 = 세미클론(;).
  • 컴파일러는 표현식을 해석하다가 세미클론을 만나면 표현식의 연산을 시작.

문장

  • 작성한 코드.
    Ex) int x, y, apples;

5. 형변환(Type conversions)

promotion

  • 작은 크기의 자료형을 큰 자료형에 대입하는 것.
    Ex) short -> int, float -> double
  • 아무런 문제가 되지 않음.
#include <stdio.h>

int main()
{
	short s = 1;
	int i = s;		// int i 에 더 작은 정수형인 short s 값 대입.

	float f = 3.14f;
	double d = f;	// double d 에 더 작은 실수형인 float f 값 대입.

	return 0;
}

demotion

  • 큰 크기의 자료형을 작은 크기의 자료형으로 대입하는 것.
    Ex) double -> float
  • "truncation" warning이 발생.
  • truncation : 값의 일부를 버림. (더 작은 자료형에 저장해야 하므로)
#include <stdio.h>

int main()
{
	short s = 210000000;	// short 범위보다 큰 자료형(int)의 값이 저장됨.
	float f = 3.14;			// float 범위보다 큰 자료형(double)의 값이 저장됨.
							// 3.14f 처럼 값에 리터럴 float 선언을 해주지 않으면 실수의 기본 자료형 = double.
	return 0;
}

나누기 연산에서 형변환

  • 컴퓨터는 다른 자료형끼리 곱하기, 나누기 연산이 불가능.
  • 실수와 정수의 연산의 경우, 컴파일러가 알아서 정수를 실수로 바꾸고 연산 수행.
  • 실수형이 정수형보다 큰 범위이기 때문에 실수형이 정수형보다 순위가 높음.
  • 연산을 할 때는 가급적이면 같은 자료형으로 넣어줄 것.
#include <stdio.h>

int main()
{
    printf("9.0 / 4.0 = %f\n", 9.0 / 4.0);	// 실수끼리 연산.
    printf("9.0 / 4 = %f\n", 9.0 / 4);		// 실수와 정수간 연산.
    										// 컴파일러가 정수 4를 실수 4.0으로 바꾸고 연산.

    return 0;
}

형변환 연산자

  • 변수의 형 변환을 위해 사용.
#include <stdio.h>

int main()
{
	int a = 3;
	int b = 2;

	printf("3 / 2 = %f", (float)a / b);	// 변수 a 를 float로 형변환 후 연산 수행.

	return 0;
}

🚩 출처 및 참고자료 : 홍정모의 따라하며 배우는 C 언어 (따배씨)

0개의 댓글