
제가 대학교 1학년 때 C언어 수업에서 배운 내용을 교재와 ppt를 중심으로 정리한 내용입니다. (2022.3 ~ 2022.6)
당시에 공부를 위해서 HWP 파일로 정리해 놓은 것을 그대로 올립니다.
대학에 처음 들어와 정리한 내용이라 모든 내용을 담고 싶은 욕심에 정리가 많이 지져분하고 어설픈점 양해 부탁드립니다..!
: 연산에 사용되는 기호
: 값이 있는 요소
ex) 상수, 변수, 연산식
: 연산자와 피연산자의 조합으로 만들어진 코드 (연산자와 하나 이상의 피연산자)
수식을 평가한다 : 수식의 값을 구하는 것
피연산자 : 연산의 대상이 되는 것
1. 단항 연산자 : 피연산자가 1개
ex) +x –x ++x --x x-- x++ !x &x ~x sizeof(x)
2. 이항 연산자 : 피연산자가 2개
ex) 산술 연산자, 대입 연산자, 관계 연산자, 논리 연산자, 비트 연산자
3. 삼항 연산자 : 피연산자가 3개
ex) ?(조건 연산자)
+x : 플러스(부호)
-x : 마이너스(부호)
x + y : 더하기
x – y : 빼기
x * y : 곱하기
x / y : 나누기
정수 / 정수의 결과는 나머지를 버리고 몫(정수)만 결과로 사용실수 / 실수 = 실수 즉, 정수끼리의 연산결과는 정수이다.x % y : 나머지 구하기
%는 문자열에서 서식지정자를 지정하는데 이용되므로 %문자를 출력하려면 “” 안에 %%를 적어주어야함. 피연산자의 형 변환
이항 연산자를 이용하는 연산식에서 피연산자의 데이터형이 서로 다르면 피연산자를 같은형으로 변환한 다음 연산 수행
피연산자 중 하나가 실수형이면, 실수형으로 형변환.
실수 * 정수 일때 정수에 대한 임시 실수 데이터를 생성.
원칙은 에러이지만 경우가 너무 많음
정수의 승격 : 피연산자가 둘다 char형이거나 short형일 때 int형으로 형 변환 후 연산
int에 할당해서 사용.: 변수의 값을 1만큼 증가, 감소 시키는 단항 연산자
변수에만 사용할 수 있고 상수나 수식에는 사용할 수 없다.
단일 문장일때는 전위형과 후위형의 연산결과가 같지만, 다른 문장의 일부로 사용시 다름.
실수형 변수에서도 사용가능.
1.0 씩 증가1. 전위형 : 먼저 변수의 값을 증가/감소 시킨 후 변수의 값이 연산의 결과가 됨
2. 후위형 : 변수의 값이 증가/감소 되기 이전에 변수의 값이 연산의 결과가 되고, 다음 문장으로 넘어가기 전에 변수가 증가/감소
: 좌변에 있는 변수에 우변의 값을 저장
변수명 = 값 형식으로 사용. 좌변에는 l-value만 사용 가능
메크로 상수나 const 변수에는 대입할 수 없다.
다른 연산자보다 우선순위가 낮다
연산식의 결과는 할당 연산이 수행되어 저장되어 있는 l-value 변수의 값을 의미
r-value는 l-value의 변수 또는 최종 연산 결과를 메모리에 저장.
l-value : 해당 변수의 메모리 영역r–value : l-value 와 비교해서 값이 있는 수식 복합대입 연산자 : 산술/비트 연산자와 대입 연산자를 결합한 것
ex) x += y x -= y x *= y x /= y x %= y x &= y x|=y x ^= y x <<= y x >>= y
: 두 수의 값을 비교하기 위한 연산자
관계 연산자의 값은 항상 참 또는 거짓(0 또는 1)
주로 조건식으로 사용
ex) x > y x >= y x<y x<= y x == y x != y
주의 사항
= 와 == 잘 구분해서 사용A != 0과 A 는 같은 의미 (조건식의 () 안에서)0, 1로 출력되지만, if(‘참/거짓 구분식’) 의 ‘참/거짓 구분식’ 에 단독으로 변수가 오는 경우에는 0 은 false, 0이 아니면 true로 평가: 참/거짓을 이용한 논리 연산 기능을 제공
x && y → 둘다 0이 아니면 1 그렇지 않으면 0x || y → 둘 중 하나라도 0이 아니면 1, 둘다 0이면 0!x → x가 0이면 1, 1이면 0값은 항상 0 또는 1이다.
논리연산식에서 피연산자가 0이 아니면 참(1)으로 간주
주의 사항
&& || 연산보다 관계 연산을 먼저 수행! 연산은 관계 연산보다 먼저 수행&& 연산이 || 연산 보다 먼저 수행A == 0 는 !A와 같은 의미 0인지 비교하는 연산자 대신 ! 연산자를 사용할 수 있음: 피연산자가 3개인 삼항 연산자
expr1 ? expr2 : expr3에서 expr1이 참이면 expr2, 거짓이면 expr3이 연산의 결과가 됨if문으로도 작성 가능함: 눈에 보이지 않게 데이터 타입이 변경된단 의미
서로 다른 데이터형의 값을 혼합 연산할 때 일어남.
변수의 초기화나 대입에서도 발생
피연산자의 데이터형이 다르면 피연산자의 데이터형이 같아지도록 형 변환한 후에 연산을 수행
double형이면 나머지를 double형으로 변형float와 정수형을 연산하면 정수형을 float로 형 변환char나 short는 연산시 int로 형 변환short변수의 값을 꺼내서 임시 공간 (4byte int타입)에 저장시킴()안에 데이터형을 써줌()로 감싸 주어야함.: 우선순위에 의해서 연산자의 수행결과가 결정
단항연산자 > 산술연산자 > 관계연산자 > 논리연산자 > 대입연산자 > 콤마연산자
연산자의 우선순위가 같을때는 결합 방향 순서대로 연산을 수행
우선순위가 혼동될때는 () 사용하는 것이 좋음
우선순위가 같지 않은 연산자끼리 연산을 할 때는 ()를 사용하지 않아도 괜찮음
: 같은 우선순위의 연산자에 대해서 어느 방향으로 연산을 수행할지를 결정