c++概念と学習/c++concept&learning(二)

9149 ワード

前編では、言語全体の発展「なぜプログラミング言語が生まれたのか」と、C++を学ぶために身につけなければならない内容について述べました.この節では、第1部の最も基本的な内容:C++の組み込みタイプ、すなわち基本タイプを認識し始めます.
これらの知識の前に問題を残します.なぜ基本的なすべての言語に似たような基本的なタイプがあるのか.
bool:真/偽を表す
bool b_ret1 = true;

bool b_ret2 = false;

 
short/long:shortは整数表現の範囲を縮小/増大させるために使用されます.つまり、メモリの消費量です.signed/unsigned:シンボルを指定します.メモリサイズは変更されません.
int(signed int)/unsigned int:一般的な意味での整数を表し、両者の違いは記号の有無にある.short,signed,unsignedを加えると整数の範囲を制御できます.したがって、int(signed int)/unsigned int signed short int/unsigned short intsigned long int/unsigned long intという複数の整数があります.
int age = 20;

unsigned int age2 = 20;

short int age3 = 20;

unsigned short int small_int = 22222;

unsigned long int big_number = 2222222222;

 
char(signed char)/unsigned char:文字を表します.プログラミングでcharを使うのはもう十分で、効率も影響しません.このタイプはややもつれていて、文字を表す意味ですが、よくその配列でデータを格納し、ポインタといえば詳しく話しましょう.
char letter_char = 'c';

wchar_t:ワイドバイト文字.charはコンピュータの記憶に1バイトを占有するため、最大256文字を表すことができ、英語の文字は十分に記憶されているが、漢字だけで何万もあるので、charはもうどうしようもない.だからwchar_tは2バイト、さらには4バイトを占め、他の民族を表すのに十分な言語を完成させる.
wchar_t wide_char = L'c'

 
float:単精度浮動小数点double:二精度浮動小数点long double:拡張精度の2つのタイプは概念的に小数であり、doubleはfloatよりもメモリ空間を多く占有し、より正確に表現されている.普通の小数はfloatでいいです.
float _length = 3.5f;

double _length = 3.5555

long double l_legnth = 3.5e-3L

 
void:空のタイプ.一般に、戻り値がない、または不確定なタイプのオブジェクトを表します.
return void;

void* p = 0;

 
Windows XP 32ビットプラットフォームの値範囲:
Type
Size
数値範囲
無値型void
0 byte
無価値ドメイン
ブールbool
1 byte
true   false
符号付きショートショット[int]/signedショット[int]
2 byte
-32768~32767
符号なし短整数unsigned short[int]
2 byte
0~65535
符号付き整数int/signed[int]
4 byte
-2147483648~2147483647
符号なし整数unsigned[int]
4 byte
0~4294967295
符号付きロング整数long[int]/signed long[int]
4 byte
-2147483648~2147483647
符号なしロング整数unsigned long[int]
4 byte
0~4294967295
long long
8 byte
0~18446744073709552000
シンボル文字型char/signed char
1 byte
-128~127
符号なし文字型unsigned char
1 byte
0~255
ワイド文字型wchar_t (unsigned short.)
2 byte
0~65535
単精度浮動小数点型float
4 byte
-3.4E-38~3.4E+38
デュアル精度浮動小数点型double
8 byte
1.7E-308~1.7E+308
long double
8 byte
 
 
プラットフォームとコンパイラの違いにより、各タイプの範囲とメモリサイズは決定されません.具体的に決定するには、下のコード(http://www.cnblogs.com/ma6174/archive/2012/02/04/2337958.htmlから)を使用します.
#include <stdio.h> 

#include <limits.h>

#include <float.h>

#include <stdlib.h>

int main(void)

{

    printf("char         %d %d
", CHAR_MIN, CHAR_MAX); printf("unsigned char 0 %u
", UCHAR_MAX); printf("short %d %d
", SHRT_MIN, SHRT_MAX); printf("unsigned short 0 %u
", USHRT_MAX); printf("int %d %d
", INT_MIN, INT_MAX); printf("unsigned int 0 %u
", UINT_MAX); printf("long %ld %ld
", LONG_MIN, LONG_MAX); printf("unsigned long 0 %lu

", ULONG_MAX); printf("long long %lld %lld
", LLONG_MIN, LLONG_MAX); printf("unsigned long long 0 %llu
", ULLONG_MAX); printf(" float %.3e
", FLT_MIN); printf(" float %.3e
", FLT_MAX); printf(" double %.3e
", DBL_MIN); printf(" double %.3e

", DBL_MAX); printf(" long double %.3Le
", LDBL_MIN); printf(" long double %.3Le
", LDBL_MAX); printf("float %u
", FLT_DIG); printf("double %u

", DBL_DIG); printf("long double %u
", LDBL_DIG); system("pause"); return 0; }