一起Talk IOS吧(第七回 OC中基本型別的程式碼演示)

talk_8發表於2020-10-25

看官們,我們在第二回中介紹了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,除去布林型別的值外,大部分型別的用法都相同。

看官們,欲知後事如何且聽下回分解!

相關文章