못정함

C언어) 4-1장: 산술, // 관계, 논리 연산자 (제어문에 사용) 본문

C언어 공부/C언어 독학 (교재)

C언어) 4-1장: 산술, // 관계, 논리 연산자 (제어문에 사용)

hadara 2024. 9. 14. 23:57

-프로그램은 CPU가 처리하는 명령어의 묶음이다.

-연산의 대상이 되는 데이터: 피연산자

-연산자: operand


<산술 연산자>

+, -, * , /

나머지 %

*실수 연산에는 나머지 개념이 없음. (나머지 연산자의 피연산자는 반드시 정수)

 

<대입 연산자>


<증감 연산자>

++a; -증가 연산자
-a에 1을 더함.
a = a + 1; 과 같은 것임
--a; (- 2개임) -감소 연산자


-증감 연산자는 하나의 연산자로 대입 연산까지 수행하므로 변수의 값을 1씩 증가시키거나 감소시킬 때 쉽게 사용할 수 있음

-for, while, do while문에서 많이 사용함

-상수에 직접 사용 불가 (++10 안됨. 변수에만 사용)
++a; 전위 표기
-값이 증감하고 나서 연산에 사용

-다른 연산자와 함께 사용하면 증감연산자가 가장 마지막에 계산됨
a++; 후위 표기
-연산에 사용하고 나서 값이 증감

중요하다


<관계 연산자>

-조건에 따라 명령을 실행해야 하는 경우에 사용

대소 관계 연산자 > , <  
동등 관계 연산자 ==, !=  

-연산의 결과 값은 1 or 0 (참/거짓)

-결과값이 0 or 1로 나오므로 %d를 사용해줘야함


<논리 연산자>

&& AND
둘 다 참일 때만 참
|| OR
둘 중 하나라도 참이면 참
! NOT

= ! 이렇게 쓰는 듯

아닌디...

a ! = b 이렇게도 쓰는디..
상황에 따라 다르지 이사람아...

*주의*

a가 30일 때

10 < a < 20 1) 10 < a 가 TRUE니까 1

2) 1 < 20을 함 -> TRUE니까 1
(10 < a ) && ( a < 20)

a의 값이 10 초과 20 미만임을 알고 싶으면

이 걸 써 야 함
1) 10 < a 가 TRUE니까 1

2) a < 20가 FALSE니까 0

3) 1 && 0 은 FALSE니까 0

 


숏 서킷 룰

&&와 ||에 적용됨

-좌항만으로 연산결과를 판별하는 기능


ex) &&는 좌항이 거짓이면 우항과 관계없이 결과는 거짓.

||는 좌항이 참이면 우항과 관계없이 결과가 참

이 때 우항은 아예 실행되지 않음.

(a < 20 ) && (++b > 20) 

++b가 항상 실행되길 바라면 안 됨.
a가 0보다 크면 (좌항이 거짓이면) 우항은 실행되지 않기 때문.

 


연산 결과는 꼭 변수에 저장하자

아니면 버려진다

 


확인문제에서 좀 중요한 내용이 있는 듯

 

점수 (a,b)는 둘 다 정수형인데 (그래서 점수 합 tot 도 정수형임)

평균은 77.5 이렇게 소수점이 나올 수 있잖아 -> 그래서 avg는 double로 해준 것임

근데 나눠줄 때 

avg = tot / 2 를 하면 tot, 2 둘 다 정수형이므로 77로 나옴

avg = tot / 2.0을 해줘야 77.5로 정확한 평균값이 나옴

 

 

+) 아님 4-2장의 형변환을 쓰면 될 듯