카테고리 없음

4강-입출력 함수와 연산자-2

meta-tony 2023. 4. 9. 13:31

산술연산자

-각종 산술연산을 수행
-이항 연산자
-단항 연산자 (++, --

int x, y;
x = 10;
y = 3;
printf("x+y=%d\n", x + y);
printf("x/y=%d\n", x / y);
// modulo operator
printf("x%%y=%d\n", x % y);
printf("y%%x=%d\n", y % x);
//단항연산자의 설명
int x = 5, a, b;
// 위치에 따라 달라지며 x++는 x=x+1이므로 
//6 * 6 수행 후 x= 6-1 처리됨
a = ++x * x--;
//a = ++x * x; 일때, a값은 동일하나 b는 60이 된다.
b = x * 10;
printf("a=%d b=%d x=%d", a, b, x);




관계연산자 -대, 소 관계를 비교하는 연산자

//관계연산자 True는 0이외의 값(1)
int a = 4, b, c, d;
b = a > 2;
printf("b=%d\n", b);
c = a < 2;
printf("c= %d\n", c);
d = a == 4;
printf("d=%d\n", d);


논 리연산자

&& - 논리곱(AND)
|| - 논리합(OR)
! - 논리부정(NOT)
int a = 4, b = 7, c, d, e;
c = a > 2 && b <= 7;
printf("c = %d\n", c); // 1
d = a < 2 || b <= 7;
printf("d = %d\n", d); // 1
e = !a;
printf("e = %d\n", e); // 0



대입연산자

/*대입연산자*/
int a = 10, b = 3, c = 1;
a *= (b - 1); // a = a * (b-1)
b /= 2 + 3; // b = 3 / 6 == 정수 0
c += 2; // c = c + 2
printf("a = %d b = %d c = %d", a, b, c);



조건연산자: 조건의 true면 수식1을 수행

(조건) ? 수식1 : 수식2;

/*조건 연산자*/
int a = 10, b;
b = (a > 15) ? (a + 1) : (a - 1);
printf("b = %d", b); // 9



비트 연산자: bit 단위의 연산을 수행

&(AND)
|(OR)
^(Exclusive OR)
~(!)
x<<2 (좌측으로 2번)
x>>2 (우측2번)

기타 연산자

sizeof(자료형, 상수, 변수, 수식): 기억공간의 크기
cast(형변환)
point 사용이 중요
& - 주소연산자로 피 연산자의 주소 나타냄
* - 내용 연산자로 피 연산자의 내용 가져옴

/*sizeof()의 사용 예*/
float a = 3.14;
printf("int형의 크기는 = %d 바이트\n", sizeof(int));
printf("float형의 변수 a의 크기는 =%d 바이트\n", sizeof(a));
/*강제 형변환의 예*/
int a = 3, b = 4;
double c;
c = (double)a / b; //int를 강제 형변환, 자동적으로 b변환
printf("나눗셈의 결과: %f\n", c);



연산자 우선 순위

z = x + y * 2 - ++x + (y += 3)
1) 괄호
2) 단항연산자
3)곱셉
4)덧셈, 뺄셈 좌에서 우로
5)대입연산자로 치환

/*연산자 우선순위*/
int a, b, c;
a = 10; b = 20; c = 30;
printf("a + b * c = %d\n", a + b * c);
printf("a = b+= 2 * c -> %d\n", a = b += 2 * c);
printf("a = (b > c) ? b : c  -> %d\n", a = (b > c) ? b : c);
printf("a / b * c = %d\n", a / b * c);
printf("a *= b = c + 5  -> %d\n", a *= b = c + 5);
// a = (a*(b=(c+5))) c + 5가 B에 저장, a*b가 a에 저장
//80 * 35 = 2,800