조무위키
조무위키
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보
행위
문서
토론
편집
역사 보기
C언어
편집하기 (부분)
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
===연산자=== ---- 가감승제, 조건, 비교, 비트 연산자 등이 존재함 int var; // 이런 변수가 있다고 하면. var = 30 ; // 대입 연산자 의외로 수학하는 사람이 약간 헷갈린다더라. var이라는 공간안에 30을 대입한 것 var = var + 20; // var의 값과 20을 더하고 대입했다. 연산자에도 순서가 있는데 대입 연산자가 제일 순위가 낮아 마지막에 연산된다 보면된다. var += 20; // 복합 대입 연산자라고 한다 방금 전 했던 구문을 줄인 것으로 더하고 대입하는 작업은 똑같다. 위와 같은 방법으로 - / * %도 가능하니 심심하면 해보길 바람. 복합 대입 연산자는 종류가 더 있다. <<= >>= &= ^= |= <<= >>= 는 시프트 복합 대입연산자 인데 비트 배우고나서 배워라 var <<= n 일경우 n만큼 비트를 왼쪽으로 이동시킨다 >>=는 오른쪽 &= 와 ^=, |= 는 각각 And 연산 후 복합대입 , XOR 연산 후 복합대입 OR연산 후 복합대입 비트 연산자에 대입 연산자 붙인거라 생각해라 조건 연산자는 >, <, >=, <=, <nowiki>==</nowiki>, != 가 존재한다 부등호를 모른다면 프로그래밍보단 기본 교육부터 받는걸 추천한다. <nowiki>==</nowiki>는 서로 같음 (수학에서의 = 가 이것이다.) !=는 서로 다름 이 연산자는 참일경우 1을 반환한다. (거짓은 0) 참고로 삼항 연산자도 조건 연산자라고 한다. '''조건 ? 참의경우 : 거짓의 경우 ''' 이런식으로 구성할 수 있다. (ex : var > 30 ? printf(<nowiki>"30보다 큼"</nowiki>) : printf(<nowiki>"30과 같거나 자금"</nowiki>); ) /* * ? : 연산자는 반환값이 있는 점에서 if와 다르다(삼항연산자는 표현식, if는 문장) * foo = bar > 30 ? 5 : 3; * 이런식으로 변수에 값을 묶어주는게 아니라면 그냥 if쓰는게 낫다(가독성) */ 많은 사람들이 모르는 건데 C99부터 iso646.h을 인클루드 하면 !=를 not_eq ||를 or &&를 and, !을 not, |를 bitor, &을 bitand 등으로도 쓸 수 있다. 하지만 <nowiki>==</nowiki>은 그 헤더파일에 정의되어 있지 않다. 비트 연산자를 위에서 잠깐 언급했는데 자세히 얘기한다 너가 컴퓨터로 보고있는 숫자는 0과 1을 표현할 수 있는 비트의 집합이다. 컴퓨터를 어느정도 사용했다면 컴퓨터는 2진수 연산을 한다는걸 들었을텐데 2진수란 2에서 자리올림이 되는 수 표현법중 하나라고 생각하면 된다. 0+1 = 1 1+1 = 10 (2라고 생각할텐데 그건 10진수고 이건 2진수다) 10 + 1 = 11 11 + 1 = 100 (이제 법칙을 알겠지? 2가되면 자리올림이다) 2진수화된 숫자를 10진수로 바꾸는걸 힘들어하던 몇몇 고등학생이 생각나는데 컴퓨터 개론에서 배우는 8421코드만 대충 알아도 시간주면 푼다 물론 여기서 설명하긴 귀차느므로 128 64 32 16 8 4 2 1 이렇게 2의 n배수 표를 만들고 그밑에 너가 10진수로 바꾸려는 2진수를 오른쪽부터 채워넣어라 그리고 1이 된 2의 n배수들을 전부 더하면 그게 변환된 10진수다. 아무튼 비트연산자는 일반 정수를 넣고 그 비트를 주작할 수 있는 고마운 연산자인데 & | ^ ~ 가 있다. & 는 AND 연산자인데 이 연산자는 왼쪽 오른쪽 비트의 각 자리를 대조해서 둘다 1일경우 1을 변환하며 나머지는 0으로 처리한다 예를들어 2진수 101(10진수로는 5) 와 1101(10진수로는 13) 을 AND 연산한다면 ( 5 & 13 ) 0101 (101 앞에는 0으로 채워두는게 비교하기 편하다) 1101 <nowiki>----</nowiki> 0101 // 이해가 됐는지는 모르겠는데 위와 아래 자리가 둘다 1이므로 1이고 나머지는 둘다 1이 아니므로 0이다. | 는 OR 연산자이며 이 연산자는 AND와는 다르게 두개의 비트중 하나라도 1이면 1이되고 아니면 0이 된다. 5 | 13 으로 다시 예를 들자면 0101 1101 <nowiki>----</nowiki> 1101 // 13이 되는거시다! ^ 는 XOR 연산자인데 꽤나 특이한 것이 각 비트가 서로 달라야 1이되고 같으면 참이된다 즉 서로 배타적이여야 참인데 그래서 배타적 논리합 이라고 한다. 5 ^ 13 으로 다시 예를 들자면 0101 1101 <nowiki>----</nowiki> 1000 // 8이 되었다 이해가 가는가? ~ 는 NOT 연산자인데 이 연산자는 0을 1로 1을 0으로 바꿔버린다. ~5 할경우 0101 <nowiki>----</nowiki> 1010 '''알아둬야 할 것이 있는데 만약 일반 정수를 ~해서 바꿀경우 음수가 되는데 왜냐하면 정수의 맨 앞비트(MSB)는 부호비트로 부호를 결정하는 비트이다.''' '''2진수로 표현된 음수는 바로 알아보기는 힘드므로 2의 보수를 취해 그 크기를 알수 있다 (2의 보수 : 모든비트 반전후 +1) ''' '''1010이 결과라고 했지만 실제 프로그램 내부 정수는 4바이트므로 11111111 11111111 11111111 11111010 으로 된다.''' '''참고로 여기서 1010에 +1을 해줄경우 원래 숫자 ( 5 )를 음수로 바꾼 값이 나온다 (var = 5 , ~var+1 <nowiki>==</nowiki> -5) ''' 시프트 연산자는 아까 설명했으니 따로 설명하지는 않는다. 논리 연산자는 && || ! 가 존재하는데. A && B 는 A와 B가 둘다 1(참)일 경우 1을 반환하며 아닐경우 0(거짓)을 반환 A || B 는 A와 B가 둘중 하나만 참이여도 1을 반환하며 아닐경우 (두개다 0) 0을 반환 !A A를 반전한다 (A가 1이면 0으로 0이면 1로)
요약:
조무위키에서의 모든 기여는 CC BY-SA 4.0 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
조무위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)