一點一滴《C 處理資料》

2022-01-30 05:41:43 字數 3944 閱讀 9543

1:(整數)short,int,long型別

short:至少16位

int:至少與short一樣長

long:至少32位,且至少與int一樣長

下來看下程式輸出的結果:

#include

#include

#include

using namespace std;

int main()

輸出為:

int is 4 bytes

short is 2 bytes

long is 4 bytes

int 的最大值:2147483647

short的最大值:32767

long的最大值:2147483647

int的最小值:-2147483648

乙個byte是8個bit

這些我都是在 windows 7 x64 旗艦版上測試的,其它的系統就沒測試了,估計也有一樣和不一樣的。

2:操作符 sizeof和標頭檔案limits

sizeof操作符指出,在使用8位位元組的系統中,int的長度為4個位元組。可以對型別名和變數名使用sizeof操作符。

如:cout<

climits的符號常量

符號常量

表示char_bit

char的位數

char_max

char的最大值

char_min

char的最小值

schar_max

signed char的最大值

schar_min

signed char的最小值

uchar_max

unsigned char的最大值

shrt_min

short的最小值

shrt_max

short的最大值

ushrt_max

unsigned short的最大值

int_max

int的最大值

int_min

int的最小值

uint_max

unsigned int的最大值

long_max

long的最大值

long_min

long的最小值

ulong_max

unsigned long的最大值

3:初始化

將宣告和賦值合併在一起:如

int a=int_max;

注:不對函式內部定義的變數初始化,該變數的值將是不確定的。這意味該變數的值將是它被建立之前,該記憶體單元儲存的值

4:無符號型別

unsigned short a;

unsigned int b;

unsigned c;

a,b,c都是int型別

看段程式:

#include

#include

using namespace std;

#define zero 0

int main()

解釋下這段程式:

short型別的a和unsigned short型別的b都取最大值,在這裡最大值是:32767。

從而都加上1,從這開始這兩個的值都變了,short型別的最大值還要再加上1,可以見得,a的值變成:-32768

unsigned short型別的b值變成:32768

下來同時設定a和b的值為:0,再減去1,從而得出的結果為

short型別的a最後值為:-1

unsigned short型別的b最後值為:65535

可以看出,整形變數的行為就是里程表。如果超出了限制,其值為另一端的值。

如下圖:典型的整形溢位行為

5:選擇整形型別

什麼情況是用什麼型別,這可真是個麻煩啊。

一般基本都是int型別,而超出int型別範圍的用long型別。

所以要看具體情況而定用什麼型別,現在電腦基本都是x86或者x64 的電腦,不存在16位的電腦,所以隨便用,但也要注意點用,越節約越好。

6:整形常量

如: int a=42;

int b=0x42;

int c=042;

cout<

cout<

cout<

1:第一位為1-9,則基數為10(10進製)

2:第一位為0,第二位為1-7,則基數為8(8進製)

3:前兩位為0x,或者0x,則基數為16(16進製制),對於16進製制數:a-f,a-f表示了16進製制位,對應與10-15.0xf為15,ox45為165(10個16加5個1)。

cout預設是以10進製顯示的。

顯示上面的列子為:

42 66

34 7:如何確定常量的型別

如把1900確定什麼型別呢,答案馬上揭曉。(如果使用了特殊的字尾表示特定的型別,或者值太大,不能儲存為int型別。)否則都是i儲存nt型別。

數字後面跟上字母,字母表示的是數字的型別。

整數後面跟的是l或者l表示該整數型別為:long,u或者u字尾表示unsigned int常量。ul(可以表示任何一種順序,大小寫都可以)表示unsigned long型別的常量(例如:22022lu或者22022ul都被儲存為unsigned long型別)。

接下來考察的是數字的長度。

對與不帶字尾的10進製的數字來說:2000表示int型別,40000表示long型別,3000000000表示unsigned long型別。

對於不帶字尾的16進製制的數字來說:0x9c40(40000)表示unsigned int型別。這表示的記憶體的位址

因此:unsigned int 比long更為合適的表示16位位址

8:char型別:字元和小數

char a;

cout<

cin>>a;

cout<

假如輸入的是:m

輸出的是m呢,還是77,顯而易見的是m。而在記憶體中的值是:77

char a;

cout<

cin>>a;

int b=a;

cout<

b=b+1;

cout<

cout<

cout.put(a);

輸入:m

輸出:77

78 m

所以就cout.put();就很關鍵了。

9:cout.put()函式

cout.put();可以代替《操作符

它提供了一種顯示字元的方法。不用在轉換ascii碼了!

10:char常量

11:通用字元名

12:signed char和unsigned char

14:const 限定符

一點一滴(五)

架構 1 什麼是架構?架構就是對系統中的實體以及實體之間的關係所進行的抽象描述,是一系列的決策。架構是結構和願景。系統架構是概念的體現,是對物 資訊的功能與形式元素之間的對應情況所做的分配,是對元素之間的關係以及元素同周邊環境之間的關係所做的定義。做好架構是個複雜的任務,也是個很大的話題,本篇就不做...

一點一滴學習Sybase

1,獲取當前時間的函式 select getdate 2,從資料字典中獲取資料庫物件 select from sysobjects 4,獲取 刪除 sybase連線,刪除正在連線的使用者.當查詢結束後連線並沒有關閉,建立表的時候出現lock問題,當把connection drop掉之後正常 sele...

學習C 的一點一滴(7)

region if的練級之路 練級 比較三個數的大小 使用者輸入三個數 我們把它轉換成double形式 請輸入第乙個數 double n1 convert.todouble console.readline 請輸入第二個數 double n2 convert.todouble console.rea...