Java에서의 정수 자료형은 다음과 같다. byte, short, int long. 변수 선언시 이 네가지를 모두 하여도 된다. 하나의 예시를 들어보자. 나는 short형 자료형인 p, i라는 정수형 변수를 선언하고 short형 자료형인 result 변수에 p,i변수의 값을 합친것의 결과를 넣었다. 그 후 출력을 하면 오류가 나는것을 볼 수 있다. 왜그럴까? 그 이유는 자바는 기본적으로 정수형 연산을 int형으로만 진행하기 때문이다. 이말은 즉슨 위의 상황에서 p, i를 short형으로 선언한것은 딱히 상관이 없다. 하지만 result에는 결론적으로 p,i를 더했다는 '연산값'이 들어가는데, 이 연산하는 과정에서 자바는 자동으로 형변환을 하여 값을 넣는다. 결론적으로 두 변수를 더한 연산값은 int형, ..
Language
1 . Java에서는 기본 정수 계산 최소 단위가 int형이다. 정수의 저장은 short, byte로도 가능하지만 정수의 계산은 최소 int형으로 계산된다. 2 . Java에서 char형은 무조건 유니코드를 기반으로 문자를 처리한다. 문자를 char형 변수에 저장할 때 실제로 저장되는것은 해당 문자의 유니코드값이다.
클래스 안에는 우리가 함수들을 여러개 선언하여 클래스라는 객체를 생성하고 인스턴스를 생성해 사용한다.여기서 우리가 클래스 안에 내장된 함수들을 흔히 '메소드'라고 하는데 일반적으로 우리 인스턴스 메소드라 하는것은 개별적으로 동작하는 함수들을 생성하고자 할 때 사용한다. 인스턴스 함수는 일반적인 클래스에서 봤듯이 첫번째 인자로는 인스턴스를 가리키는 self가 들어가고 그 다음 인자들을 받는다. 밑의 코드에서의 __init__과 graduate과 같은 함수들이 일반적으로 흔히 말하는 인스턴스 메소드이다. 123456789class school(): count = 0 def __init__(self,ID,age): #초기화함수 __init__또한 인스턴스 메서드이다. self.ID = ID self.age =..
NULL 포인터란 메모리가 할당되지 않은 포인터를 의미한다. NULL포인터는 아무것도 가리키지 않는 상태를 의미한다. 즉 NULL포인터의 경우에는 참조연산자를 이용한 역참조가 되지 않는다. 123456789#include int main(){ int *ptr = NULL; printf("%p\n", ptr); return 0;} cs 다음 코드를 보자. int형 포인터 ptr에는 NULL이라는 값이 들어가있다. 그 밑에서 해당 포인터의 주소를 이스케이프 시퀸스 %p를 이용해 출력해보면 다음과 같이 주소값이 0으로 된 상태로 출력되는것을 볼 수 있다. 그렇다면 이 NULL포인터는 어떨때 쓸까? NULL포인터는 밑의 코드와 같이 만약 메모리 값이 NULL이라면 메모리를 할당하는 과정에 사용하기도 한다. 12..
(주의 : 절대 코드 확장자를 .cpp로 쓰지 말것) 포인터를 할 때 포인터를 이용해 변수의 메모리 주소를 포인터에 저장해서 사용하기도 하였다. 다른 경우는 우리는 배열에 크기를 정해주고 사용하기도 하였다. 하지만 이번에는 scanf를 통해 메모리 공간을 사용자가 직접 원하는 만큼 메모리 공간을 사용하도록 해보자. scanf를 통해 원하는 만큼 메모리 공간을 지정한다는 문구를 잘 생각해보자. scanf를 통해 입력을 받고 해당 크기만큼 배열이 생성된다. 기본적으로 scanf를 통해 값을 넣는다는 것은 프로그램이 실행되고 나서의 일이다. 반면 배열에 크기를 미리 지정해주는것은 코드를 작성할 때의 일, 즉 프로그램이 실행되기 전의 일이다. 전자와 같이 프로그램이 실행되고있는 시간동안 사용할 메모리 공간을 할..
Microsoft Visual Studio 2017 Community버전을 쓰다보면 scanf를 쓰게되면 scanf_s로 쓰라고 권장을 하면서 오류가 난다. scanf와 scanf_s함수는 표준 입력하는데 있어서 쓰이는 함수이다. 차이점이라면 scanf_s는 scanf의 버퍼 오버플로우등 다양한 보안상의 문제를 보안한 함수이다. 최상위 버전에서는 SDL, Security Development Lifecycle검사가 체크되어있어 비주얼 스튜디오에서는 scanf_s가 없으면 오류가 난다. scanf, scanf_s의 문법은 거의 동일하다. 단 %s 를 통한 문자열을 받을 때는 입력개수를 인자로 한개를 더 넣어주어야 한다.일반적인 gcc-compiler상에서 문자열을 받는다면(gcc의 대표적인예시 : Dev-..