一. unsigned和signed
1.存儲範圍不同,以16位計算機爲例:signed的存儲範圍是(-2^15 -- 2^15-1)即 -32768到 + 32767 的整數
unsigned的存儲範圍是(0 -- 2^16-1)即 0 到 + 65535 的非負整數
在聲明int的時候,在可以保證是正整數的前提下,聲明爲unsigned,可以擴大存儲範圍
(signed a=1; signed a = -1; signed long a = 1; unsigned a = 1;)
二. const 修飾符, 將其後面的變量設置爲常量
NSString *const str2 = @"str2";
str2 = @"str3"; // 報錯
--------------------------------------------------
NSString const *str2 = @"str2"; 等價於 const NSString *str2 = @"str2";
str2 = @"str3"; //編譯通過
const的位置不同,作用不同:
NSString *const str1
不可以修改常量指針指向的原內存中的內容,常量指針不可以指向其他的內存
NSString const *str2"
不可以修改常量指針指向的原內存中的內容,常量指針可以指向其他的內存
NSMutableString const *var1
可以修改常量指針指向的原內存中的內容,常量指針可以指向其他的內存
NSMutableString *const var2
可以修改常量指針指向的原內存中的內容,常量指針不可以指向其他的內存
三. static
1.修飾局部變量 : 保證局部變量只初始化一次,在程序的運行過程中只有一份內存
2.修飾全局變量 :使全局變量的作用域僅限於當前文件內部,即當前文件內部才能訪問該全局變量,即使在聲明爲全局變量的文件中也是如此。
四 extern
聲明外部全局變量。 extern只能聲明,不能用於實現,所以在.h裏面聲明,在.m裏面實現。
只要導入頭文件,就可以全局的使用定義的變量或常量
@interface PublicFile : NSObject
@end
extern NSString * const fileName;
extern NSString * const externValue;
extern BOOL beyondHalf(int value);
extern NSString *exValue(void);
static NSString * staticValue(void); //外部直接用會報錯
#import "PublicFile.h"
@implementation PublicFile
static NSString * createStaticValue(NSString *str){
return [@"this is static value with " stringByAppendingString:str];
}
@end
NSString * const fileName = @"fileNameValues";
NSString * const externValue = @"externValues";
NSString *exValue(void){
return staticValue();
}
NSString * staticValue(void){
return createStaticValue(@"appending");
}
BOOL beyondHalf(int value){
if (value>5) {
return YES;
}
return NO;
}