반응형

언어 자료구조 알고리즘/C 언어 문법 24

13. 대입 연산자

대입 연산자 다루는 내용 - 대입 연산자 - l-value 대입연산자는 이항 연산자로 =, +=, -=, …이 있다. 대입 연산은 우항에 있는 값을 좌항에 있는 피연산자에 의해 관리되는 공간에 값 설정을 하는 연산이다. 이는 대입 연산자의 좌항에 오는 피연산자는 해당 표현을 위해 할당된 공간이 있어야 함을 의미한다. 이에 대입 연산자의 좌항에 오는 피 연산자를 C언어에서는 l-value라 부르고 있고 메모리 위치를 참조를 한다. 실제 대입 연산자의 좌항을 제외한 나머지 표현에서는 value를 의미하던 것이 대입 연산에서는 reference를 지향하고 있다는 것은 너무나 당연한 사실이라 그런지 아무런 언급을 하지 않는 경우가 많다. 하지만 이렇게 당연한 것을 이해하고 넘어가지 않을 경우에 value형식과 ..

12. 증감연산자

증감연산자 다루는 내용 - 증감 연산자와 산술 연산자와의 비교 - 어셈블리 코드 확인하기(디스어셈블리) 증감연산자는 단항 연산자로 ++, -- 연산자가 있다. 증감연산자는 기본적으로 자기 자신의 값을 1증가(++), 1감소(--)시키는 연산 행위를 한다. 하지만 연산 결과는 전위에 연산자가 왔을 때는 변경된 자기 자신의 값이고 후위에 왔을 때는 변경되기 전 값이다. 이는 증감연산의 결과를 사용을 하려했을 때는 전위 연산 표현인지 후위 연산 표현인지에 따라 영향을 미치게 된다. Look & Feel & Think 전위에 연산자가 왔을 때(++i) C언어 어셈블리 설명 int i = 0; mov dword ptr [i],0 변수 i에 0으로 초기화 ++i; mov eax,dword ptr [i] eax레지스..

11. 산술 연산자

산술 연산자 다루는 내용 - 산술 연산자의 피 연산자와 연산 결과 - 포인터와 가감(+-) 연산 산술 연산자는 모두 이항 연산자로 -, *, /, % 연산자가 있다. 각 연산자에 따라 피연산자로 올 수 있는 것이 조금씩 다르다. 문자형과 정수형은 모든 산술 연산자에 피연산자로 올 수 있으며 실수형은%연산자를 제외한 다른 연산자로 올 수 있다. 또한 포인터의 경우 +, - 연산자에 올 수도 있다. 이들에 대해 하나 하나 알아보도록 하자. +연산자 문자 정수 연산 결과 정수 문자 실수 연산 결과 실수 문자 포인터 연산 결과 포인터 정수 실수 연산 결과 실수 정수 포인터 연산 결과 포인터 실수 포인터 연산 불가 검증 프로그래밍에 관련된 학습을 할 때에는 언제나 배운 내용에 대해 검증을 할 줄 알아야 한다. 다..

10. 연산자

연산자 연산자는 프로그램의 수행할 statement를 만들기 위해 필요한 기본적인 문법 사항이다. 연산자는 수행에 필요한 인자의 종류와 개수 및 수행 할 약속된 코드의 집합이라 볼 수 있다. C언어에서 사용자가 정의할 수 있는 연산자는 함수 연산자가 있으며 일반적으로 연산자와 별도의 문법으로 취급한다. 연산자 종류 연산 기호 특징 산술 연산자 +, - , *, / , % %(나머지) 연산자는 피연산자로 정수형이 온다. 증감연산자 ++, -- 단항 연산자로 피연산자의 위치에 따라 차이가 있다. 대입연산자 =, -=, +=, ... 우항의 연산결과를 좌항의 변수에 대입한다. 비교 연산자 =, ==,!= 연산 결과가 참이면 1을 거짓이면 0 논리 연산자 &&, ||, ! 연산 결과가 참이면 1을 거짓이면 0 ..

9. 변수의 종류

변수의 종류 다루는 내용 - 전역 변수 - 지역 변수 - static, extern, const - Storage Class 1. 전역 변수 vs 지역 변수, 그리고 static, extern, const 프로그램에서 관리해야 할 데이터를 위해 변수를 선언을 하는 것은 모두 알고 있을 것이다. 변수 선언의 위치 지역변수 특정 블록 내에 선언 전역변수 특정 블록 내가 아닌 블록 외부에 선언 전역 변수는 변수 선언의 위치가 특정 블록내에 선언되어 있지 않고 블록 외부에 선언된 변수를 얘기를 한다. 그리고, 특정 블록내에 선언된 변수를 지역 변수라 한다. 가시성 static이 붙은 전역 변수 선언된 소스 파일에서만 static이 붙지 않은 전역 변수 extern으로 명시하면 모든 소스파일 지역변수 선언된 블록..

8. 변수의 선언과 초기화

변수의 선언과 초기화 다루는 내용 - 변수(와 상수)의 선언과 정의, 초기화 형식은 프로그램에서 사용할 데이터 인스턴스들에 대한 추상화일 뿐 실제 데이터를 보관할 수 있는 구체화된 인스턴스는 아니다. 추상화된 형식을 구체화를 통해 인스턴스화하는 것이 변수이다. 즉, 데이터를 위해 메모리를 할당받아 값을 보관하고 사용할 수 있는 것이 변수이다. 1. 변수(와 상수)의 선언과 정의, 초기화 변수(와 상수)의 경우는 선언을 하면 값이 default값으로 정의된다. 전역 변수와 정적(static) 변수의 경우는 0으로 지역 변수의 경우는 쓰레기 값(garbage value)이 default값이다. 만약, 다른 값으로 정의를 하고 싶으면 선언과 동시에 초기화 구문을 사용하면 된다. 기본 형식의 변수의 선언 및 초..

7.사용자 정의 형식 - 구조체, 공용체, 열거형

7.사용자 정의 형식 - 구조체, 공용체, 열거형 다루는 내용 - 구조체 - 공용체 - 열거형 - typedef - Byte Order 사용자 정의 형식은 프로그램 개발자가 구현 목적에 따라 정의하는 형식을 의미한다. 사용자 정의 형식(UDT) 구조체(struct) 멤버 사이즈의 합 + padding 공용체(union) 제일 큰 멤버 사이즈 bytes 1. 구조체 구조체는 여러 개의 멤버를 하나로 묶어 사용하는 형식이다. 가령, 학생 관리 프로그램에서 한 명의 학생의 데이터로 학번, 이름, 학년 등을 관리해야 한다고 할 때 학번들을 따로 관리하고, 이름을 따로 관리하고 학년을 따로 관리하는 것은 비효율적인 관리가 될 수 있다. 학생이라는 형식을 정의를 해서 학생들을 관리를 하면 좀 더 나을 수 있을 것이..

6.메커니즘 형식 - 배열, 포인터

6.메커니즘 형식 - 배열, 포인터 type에 대한 번역을 형식으로 표현하고 있으니 혼돈하지 마시기 바랍니다. 이와 같이 쓰는 이유는 MSDN에 한글 메뉴얼에서 형식이라는 용어를 사용을 하고 있어 익숙해 지는 것이 Visaul Studio 환경에서 학습을 하는데 도움이 될 것이라는 소견에서 쓰는 것입니다. 다루는 내용 - 배열 형식 - 포인터 형식 - value 형식 vs reference 형식 이 책에서 배열과 포인터를 메커니즘 형식이라고 분류한 이유는 기본 형식은 형식 예약어와 변수명만을 가지고 변수 선언을 할 수 있는데 메커니즘 형식은 이 외에 배열 지시 연산자와 원소의 개수가 필요로 하고 이는 사용자가 정하게 되어 실제 할당하는 크기가 다르게 된다. 또한, 포인터는 포인터 지시 연산자와 변수명을 ..

5.기본 형식 - 문자, 정수, 실수형

기본 형식 - 문자, 정수, 실수형 다루는 내용 - 문자형 - ASCII CODE - 정수형 - 실수형 - float형의 메모리에 저장 방식 기본 형식 char, unsigned char, signed char 1 byte short, unsigned short 2 bytes int, unsigned int 2 or 4 bytes long, unsigned long 4 bytes float 4 bytes double 8 bytes long double 8 bytes 1. 문자형 문자형은 1개의 문자를 표현(및 저장)할 수 있는 형식이다. 여러개의 문자를 표현하기 위해서는 메커니즘 형식인 배열(혹은 포인터)을 사용해야 한다. 문자형 char, signed char -127 ~ 128 unsigned cha..

반응형