1. 대입연산자
(기호) =
(형식) 변수명 = 수식, 값
2. 산술연산자
3. 복합대입연산자(산술연산자, 대입연산자)
(1) 표 4-3 복합대입연산자종류정리
복합 대입 연산자 |
의미 |
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 = a >> b |
(2) 프로그램 4-3소스코드 결과 주석설명
4. 관계연산자
(1) 관계 연산자의 결과 값은 논리 값이 '참' 또는 '거짓'이다.
(2) 4-4 소스코드 주석 결과
5. 논리연산자
(1) 표 4-5
x |
y |
x && y |
x || y |
!x |
거짓 |
거짓 |
거짓 |
거짓 |
참 |
거짓 |
참 |
거짓 |
참 |
참 |
참 |
거짓 |
거짓 |
참 |
거짓 |
참 |
참 |
참 |
참 |
거짓 |
(2) 4-5 소스코드 주석 결과
6.논리식의 단축평가
y = 10 인 이유
: 첫 번째 수식 x == 2의 결과 값 7은 논리 값 참에 해당하므로 뒤 수식의 연산 결과에 관계없이 전체 연산의 결과는 참이다.
따라서 뒤의 수식 y += 1 을 더이상 평가하지 않는다.
7행의 수식 y += 1은 단축평가되어 수행하지 않았으므로 y는 초깃값 10을 유지한다.
7. 조건연산자
(1) 형식
조건식? 수식1 : 수식2 |
조건식이 참일 때 수식 1 실행, 거짓일 때 수식 2 실행
(2) 예제 프로그램4-7 소스코드 실행결과
8. 증감연산자
(1) 형식 표4-6
종류 |
증감 연산자 |
연산 결과 |
전위형 |
++x --x |
x값이 1 증가한 후, 증가한 값으로 연산을 수행한다. x값이 1 감소한 후, 감소한 값으로 연산을 수행한다. |
후위형 |
x++ x-- |
현재의 x값이 연산에 사용된 후, 1 증가한다. 현재의 x값이 연산에 사용된 후, 1 감소한다. |
(2)소스코드 4-9 주석
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int x=1, y=2, z=3; x= ++x * 5; y= y++ * 5; z= 5 - --z; printf("x = %d\n",x); //1. x=x+1 //2. x=2*5 printf("y = %d\n",y); //1. y=y*5 //2. y=y+1 printf("z = %d\n",z); //1.z=z-1 //2.z=5-z return 0; } | cs |
9. 비트연산자
(설명)
비트 논리 연산자 종류로는 and (&), or(|), xor(^), not(~) 연산이 있고,
비트 이동 연산자 종류에는 >>,<< 가 있다.
비트를 이동할 때 쉬프트가 발생힌다.
비트 단위로 연산을 수행하며 2진수로 각 자리마다 연산을 수행한다.
왼쪽으로 n 비트 이동 할 때 피연산자 * 2ⁿ 이 되는것을 확인 할 수 있다.
오른쪽으로 n 비트 이동 할 대는 피연산자 / 2ⁿ 이 되는 것을 확인 할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[]) { int x,y; printf("정수 입력 : "); scanf("%d",&x); printf("이동 할 비트의 크기 입력 : "); scanf("%d",&y); printf("%d >> %d = %d\n",x,y,x>>y); printf("%d << %d = %d\n",x,y,x<<y); } | cs |
10. 형변환
- 자동 형 변환 연산은 컴파일러가 자동으로 처리하고, 강제 형 변환은 프로그래머가 형 변환 연산자를 사용하여 처리한다.
(1) 자동형변환
형 넓힘 변환 |
작은 표현 범위의 자료형이 큰 표현 범위의 자료형으로 변환 |
형 좁힘 변환 |
큰 표현 변위의 자료형이 작은 표현 범위의 자료형으로 변환 |
(2) 강제형변환
(3) 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char ch ='A'; int x = 10,y = 4, sum; double pi = 3.14, avg; sum = ch + 2; //sum 변수 (4) = char 변수(1) //컴파일러가 내부적으로 자동 형 넓힘 발생 printf("sum = %d\n", sum); //정수형으로 출력 printf("sum = %c\n", sum); //문자형으로 출력 sum = pi; //자동 형 좁힘 변환 //sum(4) = pi(8) printf("sum = %d\n", sum); printf("정수간 x/y = %d\n", x/y); //10/4 printf("실수간 x/y = %lf\n", x/y); //강제형변환 sum = (double)x/(double)y; //강제형변환호 자동형좁힘변환 printf("잘못된 sum = %d\n",sum); avg=(double)x/y; //강제형변환과 자동형넓힘변환 printf("정확한 avg = %lf\n",avg); avg=(double)(x/y); //강제형변환 printf("잘못된 avg = %lf\n",avg); return 0; } | cs |