본문 바로가기
Computer & Program/잡다한 이모저모

7/ 15, 7/16 3, 4번째 수업

by TDRemon 2009. 7. 6.
반응형

[/ 및 % 연산자]
/연산자는 나눈 몫을 구하는 연사자이다. 즉 10/3을 하면 3이 나오게 된다.
%연산자는 나눈 나머지를 구하는 연산자이다. 즉 10%3을 하면 1이 나오게 된다.
여기서 10/3.을 하면 어떻게 될까? 3.은 정수가 아니라 실수 이기 때문에 3.3333....이 나오게 될 것이다.

[fflush(stdin)]
이 함수 fflush(stdin)인 scanf로 입력 받았을시 버퍼에 저장된 불필요한 내용들을 클리어 시켜주는 함수이다. 즉, sacnf("%d", %a); scanf("%d", &b); 를 한 경우 입력을
10 20 30 을 하면 a에는 10이 들어가고 b에는 첫번째 scanf에서 받은 불필요한 20이라는 숫자가 들어가게 된다. 이러한 현상을 막기위해
sacnf("%d", %a); fflush(stdin); scanf("%d", &b);
을 사용하여 버퍼의 내용을 클리어 해줄수 있다.
즉, scanf는 엔터가 나오기 전까지 입력받은 값들을 임시 버퍼에 저장하게 된다.

[getstring 함수]
char name[20]; 이라고 선언하고 scanf를 사용하여 shin hyung sub 이라고 입력하게 되면 저장되는 값은 shin뿐이다. 즉, scanf는 공백 문자를 문자로 인식하지 못하고 입력받는 것을 끊어 버린다. 이런 공백까지도 문자로 입력 받기 위해서는 scanf가 아닌 getstring 함수를 사용하여야 한다.

[삼항 연산자]
(조건식) ? (True-식) : (False-식);
삼항 연산자는 2중 3중으로도 사용할 수 있다. 그리고 ? 하나에 : 하나가 반드시 나와야 한다. 그리고 가독성을 높이기 위해 삼항 연산자를 중복으로 사용할 때는
(a>b) ? printf("%d>%d\n", a, b) :
(a<b) ? printf("%d<%d\n", a, b) : printf("%d=%d\n", a, b);
이런 식으로 쓰면 읽기가 좋다.

[shift 연산자]
left shift 연산자와 right shift 연산자가 있다. 말 그래도 bit단위로 좌/우로 이동 시키는 연산자이다. left 연산자는 문제가 아니다. 그냥 왼쪽으로 밀고 뒤자리를 0으로 채우는 것 뿐이다. 하지만 문제는... right 연산자이다. signed 인 경우와 unsigned인 경우가 틀리기 때문이다. signed인 경우 앞 자리가 sign bit로 채워지게 되고 unsigned인 경우에는 0으로 채워지게 된다. 그리고 shift 연산자는 2진수의 이동이기 때문에 2의 곱/나누기로도 많이 쓰인다.

[TIP]
1. a = a +3같은 경우 a += 3으로 쓰는게 더 좋다.

반응형

'Computer & Program > 잡다한 이모저모' 카테고리의 다른 글

특수기호 이름들  (0) 2009.07.06
7/22 강의  (2) 2009.07.06
7/21강의  (1) 2009.07.06
7/14수업 C언어의 개략적인 내용  (0) 2009.07.06
각종 자료형의 Sizeof 결과  (0) 2009.07.06

댓글