Notes for C 4

정수 자료형의 저장 방식과 scanf함수 사용시 주의할 점

오늘 백준 문제를 풀고 코드를 이리저리 만져보다 발견한 주의점이다. 해당 문제: https://csloth.tistory.com/24 백준 2420번 사파리 월드 [C언어] 문제 출처: https://www.acmicpc.net/problem/2420 2420번: 사파리월드 첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000) www.acmicpc.net Sol) #include int main().. csloth.tistory.com C언어에서 정수 자료형의 저장 방식은 다음과 같다. 1. 2진수로 저장한다. 2. 어떤 한 자료형에서, 가장 왼쪽 비트는 부호 비트로 사용한다(0이면 양수, 1이면 음수로 판단). 3. 뺄셈, 혹은 음수..

Notes for C 2022.08.28

후위 증감연산자와 전위 증감연산자의 비밀

증감 연산자를 배울 때, 보통 후위(postfix) 증감연산자는 '할당 후', 즉 '연산자 우선 순위가 증감연산자에 비해 낮은 다른 연산 후' 연산을 하게 되고 전위(prefix) 증감연산자는 '할당 전', 즉 '연산자 우선 순위가 증감연산자에 비해 낮은 다른 연산 전' 연산을 하게 된다고 배운다(할당 연산자는 연산자 우선 순위가 증감 연산자에 비해 낮다). 이 포스트에서 우리는 도대체 왜 이런 현상이 발생하는지 알아보려고 한다. 잘 생각해보면 이는 굉장히 모순적인 문장이다. 예를 들면, 연산자 우선순위가 자신보다 낮은 '할당연산자'의 연산인 '할당' 이후에 후위 증감연산자가 연산을 수행하게 되는 것은 말이 안된다. 말 그대로, 후위 증감연산자가 연산자 우선순위가 더 높기 때문이다. 그렇다, 사실 이는..

Notes for C 2022.08.17

scanf 함수

표준입력(stdin) 스트림으로부터 형식에 맞는 데이터를 읽어 온다. scanf(형식 문자열, 데이터 저장 포인터)를 인수로 갖는다. 형식에 맞는 데이터를 읽어 오는데 성공하면 읽어온 값의 개수를 integer형으로 반환한다. 만일 사용 가능한 입력이 있었으나, 해당 입력이 형식 문자열의 형식과 맞지 않았을 경우 0을 반환할 수 있다. 또한, 읽어보기도 전에 오류가 발생할 경우 -1을 반환할 수 있다. C언어는 운영체제와 상관없이, 파일의 끝에 도달했을 떄 언제나 특별한 값(EOF, -1)을 반환하도록 돼 있다. EOF는 End Of File의 약자로, 파일의 끝을 표현하기 위해 -1로 정의된 상수이다(Windows에서는 Ctrl + Z 후 Enter, Linux나 Unix 에서는 Ctrl + D를 통해..

Notes for C 2022.08.11

메모리 관련 함수

32비트에서 포인터가 저장하는 주소값의 크기는 4바이트, 64바이트에서는 8바이트이다. malloc함수로 포인터 변수에 메모리 동적 할당 가능. malloc 함수는 할당하고자 하는 메모리 크기를 매개변수로 받고, 할당에 성공하면 메모리 주소를 리턴하고, 실패하면 NULL을 리턴한다. 동적 할당과 일반 변수 생성시 사용하는 메모리 부분은 다르다. malloc함수는 heap부분의 메모리를 사용하고 변수는 stack부분의 메모리에 생성된다. malloc 함수로 할당한 메모리에 값을 저장할 때는 *ptr = 10;처럼 포인터를 역참조한 뒤 값을 저장한다. #include #include int main(){ int *ptr; ptr = malloc(sizeof(*ptr)); //포인터가 가리키는 자료형의 크기만..

Notes for C 2022.08.07