一起Talk IOS吧(第七回 OC中基本型別的程式碼演示)
看官們,我們在第二回中介紹了OC的基本型別,有看官說介紹的不夠詳細,因此我使用圖形的方式對所有基本型別做了總結,請參考以下圖片中的內容。
看完型別的總結後,我們將通過具體的程式碼來演示如何使用這些型別。
1 #import <Foundation/Foundation.h>
2
3 int main ()
4 {
5 int intValue = 3;
6 short int shortValue = 4;
7 long int longValue = 5;
8
9 NSLog(@"int: %d, short: %d, long: %ld",intValue,shortValue,longValue);
10 NSLog(@"size int: %lu, short: %lu, long: %lu",sizeof(intValue),sizeof(shortValue),sizeof(longValue));
11
12 float floatValue = 3.1;
13 double doubleValue = 5.3;
14 NSLog(@"float: %.2f, double: %.2f",floatValue,doubleValue);
15 NSLog(@"size float: %lu, double: %lu",sizeof(floatValue),sizeof(doubleValue));
16
17 char charValue = 'a';
18 NSLog(@"char: %c,%i, size: %lu",charValue,charValue,sizeof(charValue));
19
20 bool boolValue = YES;
21 if(boolValue)
22 NSLog(@"bool value is true");
23 else
24 NSLog(@"bool value is false");
25
26 intValue = (int)floatValue;
27 NSLog(@"change value: %i",intValue);
28
29 return 0;
30 }
在程式碼中我們首先定義了int,short,long三種型別的整型變數,float和double兩種浮點型別變數,char型別變數以及bool型別變數。然後通過終端輸出這些變數相應的值,同時我們還輸出了這三種型別變數在記憶體佔用的空間。其中int型別佔用4個位元組,short型別佔用2個位元組,long型別佔用8個位元組,float型別佔用4個位元組,double型別佔用8個位元組,char型別佔用1個位元組.OC在語法上沒有指定每種型別佔用的記憶體空間大小,這個與具體的機器的有關。不同型別的機器上會有不同的結果,建議大家動手試試,看看你所用的電腦如何給這些不同型別的變數分配位元組空間。
有看官說:這些型別我拿來使用就可以了,不需要知道它佔用多少空間。這位看官的理解不準確,因為知道型別所佔用空間的大小後就能知道型別的最大值和最小值,而且也容易理解不同型別之間的賦值和轉換引起的溢位。比如int型別佔用4個位元組,那麼它的最大值就是2的31次方減1,如果給它賦值時超過了這個值,那麼就會發生溢位。
在程式碼中我們使用圓括號把浮點型強制轉換成了整型,這裡只演示如何進行強制型別轉換,其實我們不使用圓括號也會發生型別轉換,這種轉換是自動的。在實際編寫程式時,我們不推薦型別轉換,如果一定要進行型別轉換,那麼需要注意型別的取值範圍,不然發生溢位後會導致運算結果出錯。
關於整型可以使用unsigned來修飾,修飾後表示無符號整型,就是說整型變數的值都是正數和0.這個容易理解,我們在程式碼中就不演示了。
char也可以輸出為字元或者整型數值,對於像引號這樣特殊的字元,需要使用轉義”\”符輸出,這點和C語言一樣,我們也不在程式中演示了。有看官說,感覺什麼都和C語言相同呢。這種感覺是對的,畢竟OC是相容C語言的,不過不同點還是存在的,比如布林型別變數的值,在OC中變成了YES和NO。
編譯上面的程式然後執行,可以看到以下執行結果:
2020-10-25 15:42:30.850 ex.out[1202:66929] int: 3, short: 4, long: 5
2020-10-25 15:42:30.850 ex.out[1202:66929] size int: 4, short: 2, long: 8
2020-10-25 15:42:30.850 ex.out[1202:66929] float: 3.10, double: 5.30
2020-10-25 15:42:30.850 ex.out[1202:66929] size float: 4, double: 8
2020-10-25 15:42:30.850 ex.out[1202:66929] char: a,97, size: 1
2020-10-25 15:42:30.850 ex.out[1202:66929] bool value is true
2020-10-25 15:42:30.850 ex.out[1202:66929] change value: 3
看官們,我們在本章回中通過程式碼演示了第一個OC中變數基本型別的用法,最後我們對文章中的知識做一個概述性總結:
- 1.OC中的變數基本型別分為:整型,浮點型,字元型和布林型,詳細的內容可以看圖片中的總結;
- 2.OC中型別佔用的空間與機器有關,不同機器會有不同的表現;
- 3.不同型別之間的變數可以相互轉換,轉換可以自動進行,也可以強制進行,不過要注意變數取值範圍,以免發生溢位;
- 4.OC相容C,除去布林型別的值外,大部分型別的用法都相同。
看官們,欲知後事如何且聽下回分解!
相關文章
- 一起Talk IOS吧(第十二回 OC中程式結構程式碼演示)iOS
- 一起Talk IOS吧(第十八回 OC中的繼承例項)iOS繼承
- 一起Talk IOS吧(第十回 複合型別中的指標)iOS型別指標
- 一起Talk IOS吧(第十四回 類中方法的定義和使用)iOS
- iOS 初探程式碼混淆(OC)iOS
- Java基本型別自動裝箱的效能成本 -Coffee TalkJava型別
- 面試官:兄弟,說說基本型別和包裝型別的區別吧面試型別
- Swift Talk:理解值型別Swift型別
- 【Web前端Talk】React-loadable 進行程式碼分割的基本使用Web前端React行程
- [底層原理]iOS中函式的型別編碼iOS函式型別
- 什麼是寫程式碼及基本資料型別資料型別
- Java中的基本資料型別與引用資料型別Java資料型別
- 看下面程式碼,判斷a和b的型別是否為true?為什麼?什麼是基本包裝型別?[程式碼]型別
- Java的基本型別和引用型別Java型別
- 簡單演示Excel中VBA程式碼的使用Excel
- 測試Java中的long,int基本型別Java型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- WebSocket 程式碼演示Web
- C++中的基本變數型別介紹C++變數型別
- Typescript:基本型別TypeScript型別
- Go 基本型別Go型別
- 你不知道的JavaScript--Item4 基本型別和基本包裝型別(引用型別)JavaScript型別
- js基本型別和引用型別區別JS型別
- TypeScript 基本型別和泛型的使用TypeScript型別泛型
- OC-NSArray的基本介紹
- JavaScript - 基本型別與引用型別值JavaScript型別
- 基本資料型別與字串型別資料型別字串
- 基本資料型別與API引用型別的使用資料型別API
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- 好程式設計師web前端教程分享引用型別與基本型別程式設計師Web前端型別
- Java的基本資料型別Java資料型別
- Python的基本資料型別Python資料型別
- 從賦值看基本型別和引用型別的區別賦值型別
- OC中列舉寫法 以及 字串型別列舉實現探索字串型別
- 來學習typescript 吧! --6 聯合型別 | 交叉型別 |型別斷言TypeScript型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- 基本資料型別資料型別
- java基本型別和包裝型別的“==”和equals()方法Java型別