📌 단항 연산자 하나의 피연산자를 가지는 연산자를 뜻한다. 아래의 연산자가 단항 연산자에 속한다. 1. 증감 연산자 x ++ x의 값을 1 증가 y -- y의 값을 1 감소 ✔ 증감 연산자는 피연산자의 값을 1 증가하거나 1 감소시킨다. ✔ 대부분의 연산자는 피연산자의 값을 읽어 연산에 사용할 뿐, 직접 값을 변경하지 않는다. ✔ 하지만 증감연산자와 대입 연산자는 피연산자의 값을 변경한다. 타입 설명 예 전위형 값이 참조되기 전에 증감 j = ++i ; 후위형 값이 참조된 후에 증감 j = i++ ; ✔ 증감 연산자는 피연산자의 앞과 뒤에 모두 사용될 수 있다. ✔ 메서드 호출에 포함되는 경우 전위형과 후위형의 결과가 다르니 주의하자. 2. 부호 연산자 ✔ 부호 연산자는 피연산자의 부호가 반대로 변경한 ..
📌 연산자(Operator) 연산을 수행하는 기호를 말한다. 사칙 연산자뿐만 아니라 다양한 연산자가 존재한다. 1. 연산자와 피 연산자 ✔ 연산자 : 연산을 수행하는 기호 (+, -, *, / 등) ✔ 피연산자 : 연산을 수행하기 위해서는 반드시 연산의 대상이 있어야 하는데, 이를 피연산자로 한다. ✔ 연산자는 피 연산자로 연산을 수행하고, 항상 결과를 반환한다. 2. 식과 대입 연산자 ✔ 연산자와 피 연산자를 조합해 계산하고자 하는 바를 표현한 것이 식. ✔ 그리고 식을 통해 결과를 얻은 것을 '식을 평가한다'라고 한다 ✔ 하나의 식을 평가(계산)한다면 단 하나의 결과를 얻는다. ✔ 적당한 식을 프로그램에 평가하려면 식의 끝에 ';'을 붙여서 문장으로 만들자 x = 5 + 5 ; → y = x * 4 ..
2021.02.25.목 이 전의 #7일 차 정리에서는 문자열 관련 함수의 사용 예제를 위주로 살펴보았다면 이번에는 함수의 원형, 즉 함수의 선언부를 살펴보려 한다. 아래의 함수는 모두 헤더 파일에 속해 있으므로 반드시 전처리가 필요하다. strcpy() 함수 ✔ char 배열은 문자열을 저장하는 변수의 역할 ✔ 다른 문자열로 바꾸어야 할 때에는 변경하고자 하는 문자열의 문자를 요소마다 다시 저장해야 하는 번거로움이 있다. ✔ 첫 번째 인자로 저장할 공간의 주소(포인터)를 받고, 두번째 인자로는 수정할 문자열을 받는다. char * strcpy(char * dest, const char * src) ; ✔ 첫번째 인자(dest)로 받을 수 있는 값은 char 배열과 배열명을 저장한 포인터만 가능. ✔ 문자..
2021.02.24.수 아스키 코드 ✔ 알파벳과 숫자는 연속된 아스키 코드를 가지고, 소문자가 대문자보다 아스키 코드 값이 크다. ✔ 제어문자도 문자를 의미하는 형식지정자 %c를 사용해 출력할 수 있다. ✔ 실제로 문자는 4byte의 크기를 가지지만, 아스키 코드는 0~127의 범위를 가지므로 가장 오른쪽 1byte만 의미를 가진다. ✔ 대문자 'A' 는 65, 소문자 'a' 는 97로 표현이 가능하며, 아스키 코드는 연산이 가능하므로 'A' + 32 = 'a' 가 된다. #include int main(void){ printf("%c + %d = %c", 'A',32,('A'-32)); //'A' return 0; } ✔ Space Bar, Tab, Enter와 같은 화이트 스페이스는 여러 값을 입력 ..
2021.02.23.화 배열의 주소 ✔ 배열은 같은 자료형의 변수를 메모리를 연속으로 할당한다. ✔ 그러므로 배열의 요소들은 일정한 간격으로 주소를 갖게 되는데, 이는 자료형의 크기와 같다. ✔ 만약 배열 arr가 100번지부터 할당된다면, arr[0]은 100~103번지를 가지고 arr[1]은 104~107번지를 가진다. ✔ 배열의 요소는 위와같이 자료형과 같은 크기의 공간을 할당받게되고, 그 첫번째 공간의 주소가 곧 요소의 주소가 된다. ✔ 그리고 배열은 할당 받은 전체 공간의 첫번째 메모리의 주소를 가지게 된다. ✔ 결국 배열의 첫번째 요소의 주소를 알게되면, 배열의 주소뿐만 아니라 다른 요소의 주소도 쉽게 알 수 있다. #include int main(void){ int arr[3]; printf..
2021.02.22.월 포인터를 사용하는 이유 ✔ 변수는 선언된 위치에 따라 사용할 수 있는 범위가 결정된다. ✔ 매개변수로 받아오는 경우 값을 복사해 함수 내부에서 새로운 변수로 선언된다. ✔ 그렇기 때문에 아래와 같이 main함수 내부에서 선언 및 초기화된 변수는 인자로 다른 함수에 전달해 수정하더라도 main함수 내부의 값에는 영향을 주지 않는다. #include int test(int number){ number = 20; return number; } int main(void){ int number = 10; test(number); printf("%d", number); return 0; } ✔ 만약 main함수 내부의 변수에 접근해서 값을 수정하고 싶다면 어떻게 해야 할까? ✔ 주소 연산자 ..
📌 Unit 60. 함수 ✔ 60.5 연습 문제 #include void printName() { printf("Beethoven\n"); } void printOrdinal() { printf("9th\n"); } int main() { printName(); printOrdinal(); return 0; } ✔ 60.6 연습 문제 #include void printHostname(); void printIPAddress(); int main() { printHostname(); printIPAddress(); return 0; } void printHostname(){ printf("Saturn\n"); } void printIPAddress(){ printf("192.168.10.6\n"); } ✔..
📌 형식화 출력 함수 printf( ) println()과 동일하게 출력을 돕는 함수이나, 출력 형식을 지정할 수 있다는 차이점이 있다. 그리고 println()과 달리 개행이 포함되어 있지 않으므로, 개행을 원하는 경우 지시자를 사용해야 한다. 1. 지시자 지시자 설명 예시 출력 결과 %b boolean 형식으로 출력 System.out.printf( "%b", true); true %d 10진수의 형식으로 출력 System.out.printf( "%d", 10); 10 %o 8진수의 형식으로 출력 System.out.printf( "%o", 10); 12 %x, %X 16진수의 형식으로 출력 System.out.printf( "%x", 10); a %f 부동 소수점 형식으로 출력 System.out...
📌 상수와 리터럴 상수는 변하지 않는 값을 저장하는 공간을 의미하며, 한 번 초기화하면 다른 값으로 변경할 수 없다. 변수와 같은 방법으로 선언하지만, 상수임을 알리기 위해 선언 시 자료형 앞에 final 키워드를 붙이고 상수명을 대문자로 정한다. 상수는 코드의 이해를 돕고, 수정을 쉽게 하기 위해 사용한다. 1. 상수의 선언과 초기화 final 자료형 상수명 = 값; ✔ 상수는 반드시 선언과 동시에 초기화해야한다. ✔ 상수의 이름은 대문자로 하고, 여러 단어로 이루어지는 경우 언더바를 사용하는 것이 암묵적인 약속이다. final int MAX_SCORE = 100; ✔ 상수는 이와 같이 변하지 않는 값을 의미하기 때문에, 기존의 상수는 리터럴이라 부른다. 변수(variable) 값을 저장하기 위한 공간..