프로 그래 밍 지식 점(1)키워드 의 저장 유형

(일부 초보 자의 요구 에 따라 본인 도 절대 전공 이 라 고 할 수 없 지만 한 사람 을 초학 의 막막 함 에서 빨리 벗 어 나 게 하려 면 이런 세련 된 집합 이 필요 하 다)
우선,나의 관점 을 천명 하 다.
어떤 프로 그래 밍 언어 든 사실은 공통점 이 많 습 니 다.기본적으로 프로 그래 밍 언어 를 배 웠 고 다른 언어 도 빨리 배 울 수 있 습 니 다.(본인 은 C++를 배우 지만 필요 할 때 언어 특색 을 피하 고 생각 만 합 니 다)
이렇게 광범 위 하고 깊이 있 는 분야 에서 일부 기능 은 사람들 로 하여 금 내부 구 조 를 먼저 이해 하 게 한 다음 에 사용 하 게 할 수 없다.예 를 들 어 C+언어 중의 scanf,printf 는 지침 의 전달 사항 과 변 삼,cin,cout 는 템 플 릿 과 재 부팅 연산 자 등 이다.그러나 저 는 저장 유형 부터 말 하 겠 습 니 다.상술 한 복잡 한 것 은 나중에 도 말 할 것 이다(그러나 C++언어 특색 이 있 으 면 Extra 편 을 열 어야 한다).
먼저 여러분 에 게 알려 야 할 것 은 컴퓨터 가 10 진법 을 사용 하면 자원(현재)이 매우 낭비 되 고 성능 이 좋 지 않 으 며 2 진법 과 10 진법 의 전환 이 매우 편리 하 다 는 것 입 니 다.관심 이 있 으 면 바 이 두 에서'왜 컴퓨터 가 2 진법 을 사용 하 는 지'를 사용 하여 지면 을 낭비 하지 않 습 니 다.
그리고 사람 이 글 씨 를 쓰 려 면 종이 와 펜 이 있어 야 한다.컴퓨터 가 정 보 를 기록 하려 면 컴퓨터 에'종이'와'펜'을 주어 야 한다.'종이'는 자연히 유한 한 것 이 고'펜'도 규격 이 있다.메모 리 는 컴퓨터 의'종이'이 고 메모리 에 대한 읽 기와 쓰기 부품 은'펜'이다.
(그렇다면 컴퓨터 의'펜'은 읽 을 만하 다.하하)
그러나 인간 의 뇌 가 적응 하 는 것 은 10 진법 이다.2 진법 은 우리 에 게 이해 하기 어렵 고 컴퓨터 는 비 아라비아 숫자 정 보 를 기록 해 야 한다.예 를 들 어 나의 이 글 은 ASCII 인 코딩 이 있 고 대응 하 는 저장 유형 인 char(character)가 있다.작은 숫자 에 short int 가 있 고 큰 숫자 에 int 가 있 으 며 더 큰 숫자 에 long int 가 있다.이것들 은 정수(integer)안에 들 어가 고,때때로 우 리 는 소 수 를 기록 해 야 하기 때문에,integer 에서 몇 자 리 를 가지 고 소수점(10 진법)의 위 치 를 기록 하면,float(floating number)와 double(Double-precision floating-point)이 있다.
(생각해 보 니 왜 바 이 너 리 기록 소수,즉 바 이 너 리 아래 의 소수점 위 치 를 직접 사용 하지 않 았 습 니까?알림:0.31 을 2 진 소수 로 바 꿔 보 세 요.무엇 을 발견 할 수 있 습 니까?)
그리고 이 유형의 속성 과 가능 한 bug 를 말씀 드 리 면 이 편 은 끝 날 수 있 습 니 다.
char:1 바이트,기록[-128,127](못 알 아 본 파트너 에 게 알려 주세요.이것 은 닫 힌 구간,즉 양 끝 점 을 포함 하 는 구간)의 정수 입 니 다.ASCII 메타 에 서 는 일반적으로 문자 0 의 ASCII 코드,문자 A 의 ASCII 코드,문자 a 의 ASCII 코드 와 빈 칸 과 줄 을 바 꾸 는 ASCII 코드 를 외 우려 고 합 니 다.다음 표 에 서 는[0,127]코드 값 에 대응 하 는 문 자 를 먼저 알 아 보 겠 습 니 다.
([128,255]의 부분 은 unsigned 를 배 운 후에 알 게 될 것 이 라 고 생각 합 니 다.아니면 제 가 힌트 를 드 리 겠 습 니 다.이 코드 값 을 8 비트 2 진법 으로 돌려 서 어떤 발견 이 있 는 지 보 세 요)

ASCII 메타,네트워크 에서
short int:2 바이트 로[-32768,32767]의 정 수 를 기록 합 니 다.
int:4 바이트 로[2147483648,21474483647]의 정 수 를 기록 합 니 다.
long long int:8 바이트,기록[-9,223,372,036,854,775,808,9,223,372,036,854,775,807]의 정수.
(생각해 보 니 왜 하한 선의 절대 치가 상한 선의 절대 치보다 1 이 많 을 까?알림:바 이 너 리 기호 위치 에서'양음 수'의 개수 가 같 는 지 생각 합 니 다)
(부동 소수점 을 말 하려 면 컴퓨터 의 과학 기수 법 을 도입 해 야 한다.예 를 들 어 6.02 e23 은 6.02 곱 하기 10 의 23 차 멱 을 나타 내 고 지 수 는 마이너스 이 므 로 나 는 말 할 필요 가 없다)
float:4 바이트,기록[3.4e-38, 3.4e 38]의 실수 로 유효 자릿수 는 6~7 자리 이다.
double:8 바이트 를 차지 하고[1.7e-308,1.7 e308]의 실 수 를 기록 하 며 유효 수 는 15~16 비트(double 유형의 처 리 는 현대 의 최적화 에서 float 보다 빠르다 고 합 니 다.)
그러면 문제 가 생 겼 습 니 다.저 는 int 형식(32 비트)이 있 습 니 다.만약 에 32 비트 이상 의 데 이 터 를 이 int 에 할당 하면 어떻게 될까요?정 답 은 32 비트 이상 의 내용 을 버 리 고 32 비트 이하 의 내용 을 그대로 옮 기 는 것 이다.기호 위 치 는 1 의 값 을 부 여 받 을 수 있다.즉,데이터 가 넘 치면 마이너스 가 되 고 정수 가 있 을 때 가 있다.상하 한도 가 부족 하면 우 리 는 높 은 정밀도 로 상하 한 을 확대 하기 때문에 대부분 데이터 가 넘 치 는 상황 은 프로그래머 의 부주의 로 인 한 bug 이다.

좋은 웹페이지 즐겨찾기