목록C (47)
NULL
리터럴상수는 말 그대로이름을 지니지않은 상수이다. 무슨말이냐면 변수 num이 있다고 가정하자. num = 30 + 40; 이라고 하는데 30과 40이라는 값은 이름이 없다.그냥 메모리공간 어딘가에 존재하는 값일뿐이름이 없기에 변경도 할수없다. 변수는 이름이 지정되있고변경도 가능한데 리터럴 상수라는 것은 이름 자체가없어서변경이 불가능하다는 것이다. 변수처럼 이름이 존재하는게 아니다.그냥 메모리공간 어디에만 남아있는것. 리터럴상수의 크기를 확인해보면문자크기가 4바이트가 된것을 볼수있다. 리터럴상수에서문자는 int형으로 표현된다.정수나 실수는 기본적인int, double형으로 표현된다. 이밖에도 접미사를 이용해서상수의 자료형을 변경할수있다. 항상 기억해야할것은 컴퓨터는 자료형을 명시하지않으면정수는 int로 연..
아스키코드는 문자의 표현이다. 한마디로 고유한 숫자이다. 고유한 숫자를 문자로 바꿀수있고반대로 문자도 숫자로 바꿀수있다. 방법은 간단하다. 문자와 정수의 서식문자를 이용하여 출력해보면실행결과에선 문자를 문자로 출력하고숫자를 숫자로 출력하기도 하지만 문자, 숫자를 가지고 있는 값이서식문자로 인해문자는 숫자 , 숫자는 문자로출력되는것을 볼수있다. 표를 한번 보고 이해를 해보자. 보면 문자 'A' 는 10진수로 65라는것. 알파벳이 점점 뒤로 갈수록 값이1씩 차이난다는 것을 알수있다. A~Z = 65~90a~z = 97~122 이정도만 알고 있으면 된다.그외에 다른것들은 표를 보고 찾아서 쓰자.
실수의 표현범위는 float, double 충분히 넓다. 실수에서 double형이 대표적인 이유는 double형이 float형보다 정밀도가 높다. float형은 정밀도가 부족한 면이 많다. 사진으로 봐도 float보다 double형이더 정밀도가 높다는걸 확인할수있다. double형으로 입력을 받을땐 float,double출력할땐 %f double만 입력받을때 %lf을 쓴다. 출력할때는 float, double 둘다%f으로 써주는게 표준이다.
sizeof 함수는 자료형의 크기를 확인 용도로 사용한다. 먼저 자료형의 크기를 보도록 하자. 자료형의 크기들은 외울필요가 있다. 여러번 보다가 보면 익혀질것이니그렇게 신경쓰고 외우지 마라. sizeof 사용법은 보기와 같다. 그냥 변수나 자료형의 이름을sizeof()괄호안에 넣어주면 된다. 자료형의 크기만큼 값들이 나온다. 여기서 출력결과값을 보면 sizeof함수를 이용해서 변수의 크기를출력하는것들은 다 정상적으로 표현이 됬는데 sizeof함수로 크기를 연산한것은 크기가 int와 같은 4바이트로 변환이 된것을 확인할수있다. 피연산자를 연산하면서 4바이트가 된 이유는 CPU는 연산을 할때 int로 형변환이 된다. 즉 4바이트로 형변환됨. 굳이 많은 크기의 데이터가 필요하지않는데 크기가 큰 자료형으로 데이..
비트연산자는 비트단위연산자이다. 이미지로 보는것과 똑같다. &연산자는0을 제외한 값이 둘다 동일하면 참. | 연산자는하나이상이 참이라면 참 ^연산자는 XOR연산을 한다고 나와있는데 이것은 참이면 거짓으로 표현하고거짓이면 참으로 표현하는 연산자이다. 즉 서로 다르면 참이라고 표현하는 연산자이다. ~연산자는 0이면 1로 반환시키고 반대로1이면 0으로 반환시키는 연산자다. 쉬프트연산자라고 불리는 > 연산자를 설명하겠다. 그냥 방향대로 비트를몇칸옮길지 정할수있는 연산자이다. 칸을 옮기면 값은 당연히 달라진다. 쉬프트 연산자를 써서 비트칸을 옮기게 되면앞에있는 비트는 짤리고 그리고 칸이 옮겨지고 뒤에 빈자리는 0으로 채워진다. 쉬프트연산자의 단점은 CPU마다 결과값이 달라진다. 따라서 호환성이 요구되는경우에는 쉬..
MSB는 최상위 비트 또는 최상위 바이트가 있다. 정수의 표현방식은 바이트와는 상관없다. 바이트의 크기가 크면그만큼 넓은 범위의 정수를 표현할수있을 뿐이다. 흔히 하는 착각이 이런 경우이다. 단순히 MSB만 달라지면 부호가 달라지는줄 안다. 허나 전혀 그렇지않다. +5를 -5로 바꿀려면 2의보수를 취해야한다. 2의 보수는 머냐면 0은 1로 바꾸고 1은 0으로 바꾼다. 이것을 1의 보수라고 하며 2의 보수는 1의 보수를 한 상태에서 +1을 하게 되면 그게 바로 2의 보수이다. 이렇게 2의 보수를취해주면 값의 부호가 바뀐다. 반대로 -5에서 +5를 만들려고 해도 똑같이 2의보수를 취해주면 되는것이다. 부호를 바꿀땐 무조건2의보수를 취해줘야된다는걸 잊지말고 머릿속에 새겨넣자.
데이터 표현방식에서 가장 첫번째로는 진수가 있겠다. 진수는 다들 알고있는 흔한 2 , 8 , 10 , 16 .... n 진수이다. 우리는 일상생활에서 10진수를 사용하고 있다. 2진수는 ?0과 1로 데이터를 표현하는 방식 8진수는 ?0 ~ 7 까지가다가 10 11 12로 넘어간다. 10 = 8 , 11 = 9 , 12 = 10 인것이다. 16진수는 ?0~9까지는 자연수로 가다가 그 이후A~F까지 표현하다가 다시 오바되면00~0F , 10~1F , 20~2F이런 규칙성을 가지고 있다. 비트와 바이트 1비트가 8비트가 되면 1바이트가 된다. 2바이트는 16비트가 모여서 2바이트가 된것이다. 1바이트당 하나의 주소가 있다. 나중에 뒷단원으로 가다보면 심화설명이 있겠다. 2진수 10진수 변환법 예를 들어서 11..
scanf 함수는 입력할때 쓰인다. 사용법은 다음과 같다. int num;scanf("%d", &num); 여기서 &연산자는 무엇이냐면주소값을 num의 주소값을 가르킨다. num이라는 변수의 주소값에입력값을 저장한다는 의미이다. scanf를 쓸땐 scanf("%d ",&num); 이런식으로 서식문자뒤에 공백을 주면입력을 한번 더 해야 실행되는 오류가 발생하니서식문자뒤엔 공백이 없어야된다. scanf의 원리는 이러하다. 서식문자위치에 차례대로 입력값을 받고각 변수의 주소들로 저장이 된다. 입력하면 서식문자를 거쳐서 변수주소값으로값이 저장되는 형식이다.
논리연산자는 && , || , ! 등이 있으며 && (AND)연산자 ? 1이상 결과값이 서로 같아야 참이며 만약 둘다0인데 참이나와야하지않나?이런 경우가 있는데 0은 거짓이기때문에참이 되지않는다. || (OR)연산자 ? 둘중 하나이상이 참이라면 참을 반환한다. ! (NOT)연산자 ? 조건이 참이면 거짓을 반환하고거짓이면 참을 반환하는 연산자이다. 콤마연산자 ( , ) 이것은 일상생활에서 사용하는 콤마의 개념이다.구분을 목적으로 사용하는 연산자이다. 연산자의 우선순위 수학에서도 똑같이 곱셈과 나눗셈이덧셈과 뺄셈보다 연산이 먼저진행된다. 만약 덧셈과 뺄셈을 먼저연산하고싶다면(num1+num2)이런식으로 쓰면 된다. 일반적인 수학개념과 같다고 보면된다.
관계연산자는 조건부에서 많이 쓰인다. 여기서 한번 더 새겨들어야될것은 0이 아닌 모든값은 참으로 간주하는것이고1이 대표적인 참값이다. 관계연산자는 조건에서 많이 쓰이며 조건에서는 참인가 ? 거짓인가 ? 이것을따지기때문에 0과 1의 이해가 잘 되어야한다. 변수 a,b가 있다고 가정하자. < 연산자는a 연산자도 방향만 다를뿐 같은 개념이다.입을 벌리고 있는 쪽이 큰쪽인지 물어보는것이다. == 연산자는a,b가 서로 같은 값인가?물어보는 연산자이다. != 연산자는a!=b가 서로 다른가?또는 서로 다르면 이라고 표현한다. =b라고 한다면a가 b보다 크거나 같다면 이다. 실제로 이런식으로 조건이 참이면 1을 출력하게되고조건이 거짓이라면 0을 출력하게 된다.