C언어에는 삼항 연산자가 있습니다. 어떻게 쓸까요? ((조건식1)?식1:식2) 여기서 조건식 1이 참이라면 식 1이 평가되고, 아니면 식 2가 평가됩니다. 흐름도는 대충 이런 식으로 갑니다. 그러면 if문이랑 비슷한 점이 많겠군요. 많은데, 보통 if문 안에는 문장들이 옵니다. 그런 반면에, 삼항 연산자는 식이 옵니다. 식이나 값이 온다면, 조건식에 맞으면 값을 어딘가에 대입하는 식으로 많이 쓰시는데요. 예제로 보여드리겠습니다. 예제 1을 봅시다. a와 b를 입력받았습니다. 그리고 6번째 줄을 보시면 (a>b)?a:b 라는 절이 보입니다. 이를 쪼개 봅시다. 그러면 a>b인 경우에, a라는 수식이나 값이 평가가 되고, 그렇지 않다면 b가 평가됩니다. 그 결과를 res라는 변수에 넣고 있어요. 즉, a>b..
코딩/C 검색 결과
C언어에서, 어떠한 조건문을 만족하면, 특정한 문장을 수행하게 할 수 없을까요? if, else if, else 공식으로 하실 수 있어요. 먼저, 이런 경우 먼저 생각해 봅시다. 패턴 1은 다음과 같습니다. if(조건문) 명령1; 명령2; 이 경우 조건문이 참이라면 명령1, 명령2 순서대로 실행이 되고, 그렇지 않다면 명령 1만 수행되는 패턴입니다. if(x>=0)이 하나 있어요. x가 0보다 크다면 work() 함수가 수행이 될 거에요. 그렇지 않다면, 바로 7번째 줄로 갈 겁니다. 이것을 흐름도로 그려보면 아래와 같습니다. 만약에 x>=0이라면 work를 수행합니다. 그렇지 않다면, work를 수행하지 않고, 그냥 건너 뛴다는 것을 알 수 있어요. 만약에, 조건을 만족하지 않으면, 다른 문장이나 블록..
저번에 부동 소수점에 대한 이야기를 했었습니다. 그러면 C언어에서 double과 float의 차이는 무엇일까요? 정밀도 차이입니다. 그리고 오차 범위도 차이가 날 수 밖에 없는데요. 저는 이 두 가지를 중점적으로 보도록 하겠습니다. 일단, 부동 소수점 같은 경우, 소수부가 2^q꼴 실수인 것들만 표현할 수 있어요. 예를 들어 0.5, 1.625와 같은 것들이 그러한 예입니다. [관련글] 왜 0.1을 저장하면 오차가 생길까요? 이번에는 오차에 대해서 간략하게 짚고 넘어가 보도록 하겠습니다. 먼저 float형, 그러니까 단정밀도를 IEEE 754 형식으로 표현하면 아래와 같습니다. 이는 실수 z가 (1.xxx)와 2^(yyy-bias)의 곱으로 표현이 될 때, 저래 들어간다는 겁니다. 단정밀도는 이 bias..
C언어에서 정수는 어떻게 표현이 될까요? 결론부터 말하자면, 2의 보수 표현법으로 표시합니다. 그러면 이 표기법이 무엇일까요? 4bit로만 표현되는 정수 데이터가 있다고 해 봅시다. 부호가 있는 정수인 경우, 최상위 비트는 보통 부호를 표시합니다. 이 때 signed bit가 1이면 음수를, 아니라면 양수를 나타냅니다. 만약에 부호 없는 정수형이라면, 4bit를 다 쓰겠지요. 4개의 비트로 표현할 수 있는 상태값은 16개입니다. 수로 따지면 0부터 2^4-1까지입니다. 그런데 하나의 비트를 부호를 위해서 썼으니, 일단 양수에 대해서, 0, 1, 2, 3, 4, 5, 6, 7까지면 표현이 가능하겠군요. 이것들은 각각 2진수로 0부터 7까지를 나타냅니다. 음수일 때가 문제인데요. 이것을 어떻게 표현하면 좋을..
단축평가는, 계산을 하는 도중에 이미 결과값이 확정된 경우에, 나머지 계산 과정을 생략하는 것입니다. 예를 들어서 A or B or C라는 수식이 있다고 해 봅시다. 만약에 A가 참이라면 어떨까요? B나 C가 참이던 거짓이던 A or B or C는 참이 될 겁니다. 즉, B나 C는 볼 필요가 없다는 겁니다. 예제를 통해서 이해해 봅시다. 먼저, a, b, c의 값은 각각 0, 0, 0입니다. 논리 연산자는 좌측에서 우측으로 들어가는데요. ((b++
최근댓글