비트 단위 연산자 +
쉬프트 연산자 : 사용자가 원하는 수만큼 전체 비트를 이동시키는 연산자. << (왼쪽 쉬프트 연산자) >>(오른쪽 쉬프트 연산자)
0000 1010 <<2 == 0010 1000
N << B = N * (2^B) N>>B = N/(2^B) :: 몫으로
호너의 법칙 ⇒ 다항식을 프로그래밍 기법으로 표현하는 방법. 연산이 진짜 빠를 수밖에.
그런데, 시프트 연산을 했을 경우의 문제점이 있음. char a = 10 a <<4 가 되면 160이 출력됨
그런데!! char 은 -128~127까지이기 때문에 오버플로우가 일어남.
또한 양수인 경우에는 채워지는 비트가 0이지만, 음수라면 1로 채워진다.
증감 연산자 : 기존의 데이터 값을 하나 증가시키거나, 감소시키는 용도 ++ , —
후위,전위 연산 전위/전치 연산자 (속도가 조금 더 빠름. 후치보다) ++a 선 연산 후 대입
후위/후치 연산자 a++ 선 대입 후 연산
후위 연산자는 중복 연산 불가 (i++)++ ⇒ 컴파일 에러. i++는 대입후 연산이 되기 때문에 Lvalue 즉, 리터럴 상수가 됨. 따라서 이후 연산이 불가능.
축약 연산자 : 연산자의 형태를 생략. 자기 자신의 값을 연산자를 통하여 가공하고자 할 때 사용. += -= /= <⇐ >>= %=
삼항 연산자 : 피연산자가 3개인 연산자. 조건식 ? 참인 경우 실행콛 : 거짓일 떄 실행 코드;
goto : 코트의 흐름을 내가 원하는 곳으로 이동시킬 수 있는 문법. 그런데 스파게티 코드를 만들게 되니까 걍 쓰지마라.
if문 : 조건이 참인 경우 실행하는 코드
if(조건식1){코드 몸체A}else if(조건식2 ){코드 몸체B}else{코드 몸체C}⇒ if(조건식1){코드 몸체A}else{if(조건식2){코드 몸체B}else{코드 몸체C}}
이렇기에 if와 else if의 조건이 겹치더라도, if가 충족되면 이후 else if를 신경쓰지 않음.
if와 else는 메모리적으로는 독립적인 공간을 가지지만, 컴파일러 상에서는 하나의 흐름(대칭구조)으로 보고 있기에 if /else 사이에 무언가 다른 코드를 넣을 수 없음.
if( a<b && (a=100)){ cout<<a<<endl; }
이리면 a는 100이 됨.
if( a<b || (a=100)){ cout<<a<<endl; } 이러면 a 는 10이 됨. 왜냐면 1번째 조건이 참이되면 이후것을 볼 필요가 없기 때문.
switch문 : 상수 조건 분기문. 정수만 취급하며 실수값으로 분기가 불가능 리터럴 상수 / 심볼릭 상수 둘다 괜찮음.
switch문은 조건이 부합한 case 이후로 모두 실행하게 됨. 그렇기 때문에 case이후 break를 넣어주어야 함.
만약 switch 문에서 정해주지 않은 조건을 입력하게 되면. 즉 1,2,3으로 케이스를 잡았는데 4를 넣었다면 값이 있기에 분기문이 실행이 되었지만 메시지 처리 대상을 탐새가고 있기 때문에 프로그램이 멈추게 됨.
그렇기에 꼭 default를 써라!
case 안에 case의 지역변수를 사용하고 싶으면 {중괄호}를 사용해라. → 대신 break는 중괄호 밖에.
반복문 : for, do while ,while
for문
-무한루프를 전제로-
while 문
dowhile문