数据类型和表达式
①数据类型和常量
基本数据类型:int,char,float,double
常量:任何数字、单个字符或者字符串
int | float | char |
---|---|---|
int即是整数常量,或者称为整型常量,例如:12,32,-345等,前面的负号表示为负数 | float又称浮点常量,可以存储包含小数位的值,NSLog中显示浮点值可用转换字符%f,&e或者%g;浮点常量也可用科学计数法表示,例如:1.7e4即表示1.7*10^4。double类型与float类型相似,只是可存储范围要大。计算机中不能精确的表示一些浮点数! | char称为字符常量,将字符放入一对单引号中就能得到字符常量,例如’a’、’;’、’2’。特别的:‘\n’(即换行符)是一个合法的字符常量,其中\被认为是特殊符号,Objective-C认为’\n’是单个字符;NSLog中使用%c显示char字符。 |
②限定词
限定词:long、long long、short、unsigned、signed
将限定词放在声明之前,那么所声明的变量在某些系统中将具有不同的值域。
类型 | 实例 | NSLog字符 |
---|---|---|
char | ‘a’、’\n’ | %c |
short int | - | %hi、%hx、%ho |
unsigned short int | - | %hu、%hx、%ho、%hu |
int | 12、-97、0xef0、o177 | %i、%x、%o |
unsigned int | 12u、100U、0xfu | %u、%x、%o |
long int | 123l、0x2fl、o28l、-123L | %li、%lx、%lo |
unsigned long int | 12UL、100ul、0xffeeul | %lu、%lx、%lo |
long long int | 0xe5e4e4e4e4ee4LL、500ll | %lli、%llx、%llo |
unsigned long long int | 12ull、0xffeeULL | %llu、%llx、%llo |
float | 12.34f、3.1e-5f、0x1.4p10、0x1P-1 | %f、%e、%g、%a |
double | 12.34、3.4e-5、0x.1fp3 | %f、%e、%g、%a |
long double | 12.34L、4.5e-5l | %Lf、%Le、%Lg |
id | nil | %p |
id类型
id数据类型可存储任何类型的对象。
③算数表达式
二元运算符:+、-、*、/
包含多个运算符的表达式求值依据运算符优先级来确定:优先级较高的运算符首先求值,(*、/)>(+、-);若表达式包含优先级相同的运算符,按照从左到右或者从右到左的方向求值,具体按那个方向取决于运算符,即所谓的运算符结合性。
一元运算符:-
一元运算符用于单个值的运算,而二元运算符作用于两个值。
与其他运算符相比,一元负号运算符具有更高的优先级。
模运算符:%
NSLog使用%后面的字符来确定如何输出下一个参数,然而,若%后紧跟一个%,那么NSLog会认为你的目的是想显示百分号。
NSLog(@"a/b*b+b%%b=a");
显示结果是:a/b*b+a%b=a
模运算%只用于处理整数,模运算的优先级与乘法,除法相等。
整型值与浮点值的相互转换
1、将浮点数赋值给整型变量,小数部分将被删节,例如:
int a;
a=12.34;
NSLog(@"a=%i",a);
将显示:a=12
2、编写算术表达式需要记住的两点:
<Ⅰ>只要表达式中两个运算数是整型,该运算就将在整数运算的规则下进行。
<Ⅱ>对于任何处理两个值得运算,如果其中一个值是浮点变量或常量,那么这一运算将作为浮点运算来处理。
类型转换运算符
f2=(float)a/100;
类型转换运算符将变量a的值转换成float类型,而且该运算符不会影响变量a的值,它是一元运算符。
类型转换运算符的优先级比其他所有算术运算符都高,但一元减号和加号除外。
类型转换运算符主要用来将一般id类型的的对象转换成特定类的对象。
④赋值运算符
将算术运算符和赋值运算符合并在一起:op=
count += 10;
通常所说的“加号等号”运算符(+=)将运算符右侧的表达式和左侧的表达式想加,将结果保存到运算符左侧的变量中。
使用赋值运算符的目的有三个:
首先,程序更容易书写
其次,结果表达式更容易阅读
最后,这些运算符可以使程序运行速度更快,因为编译器有时在计算表达式时能产生更少的代码。