程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c++ 概念及學習/c++ concept&learning(二)

c++ 概念及學習/c++ concept&learning(二)

編輯:C++入門知識

上篇內容講述了整個語言的發展【為什麼會產生編程語言】,以及學習C++所需要掌握的內容。
這節開始認識第一部分最基本的內容: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 int
signed 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在計算機存儲中占用一個字節,最多能表示256個字符,
英語字符是足夠儲存,但是光漢字就有上萬個,char已經無能為力了。
所以wchar_t占兩個字節,甚至四個字節,完成足夠表示其它民族的語言。

wchar_t wide_char = L'c'

 

float: 單精度浮點 double:雙精度浮點 long double :擴展精度
兩個類型在概念上都是小數,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

有符號短整型short [int] /signed short [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\n", CHAR_MIN, CHAR_MAX);
    printf("unsigned char類型的變量存儲值從0到%u\n", UCHAR_MAX);
    printf("short類型的變量存儲值從%d到%d\n", SHRT_MIN, SHRT_MAX);
    printf("unsigned short類型的變量存儲值從0到%u\n", USHRT_MAX);
    printf("int類型的變量存儲值從%d到%d\n", INT_MIN, INT_MAX);
    printf("unsigned int類型的變量存儲值從0到%u\n", UINT_MAX);
    printf("long類型的變量存儲值從%ld到%ld\n", LONG_MIN, LONG_MAX);
    printf("unsigned long類型的變量存儲值從0到%lu\n\n", ULONG_MAX); 
    printf("long long類型的變量存儲值從%lld到%lld\n", LLONG_MIN, LLONG_MAX); 
    printf("unsigned long long類型的變量存儲值從0到%llu\n", ULLONG_MAX);     
    printf("最小的非零float類型變量的值的是%.3e\n", FLT_MIN);
    printf("最大的float類型變量的值的是%.3e\n", FLT_MAX);
    printf("最小的非零double類型變量的值的是%.3e\n", DBL_MIN);
    printf("最大的double類型變量的值的是%.3e\n\n", DBL_MAX);
    printf("最小的非零long double類型變量的值的是%.3Le\n", LDBL_MIN);        
    printf("最大的long double類型變量的值的是%.3Le\n", LDBL_MAX);           
    printf("float類型的變量提供%u位精度的小數位數\n", FLT_DIG);
    printf("double類型的變量提供%u位精度的小數位數\n\n", DBL_DIG);
    printf("long double類型的變量提供%u位精度的小數位數\n", LDBL_DIG);
    system("pause"); 
    return 0; 
}

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved