Objective-C 程序设计 01

遗忘在时光之中的读书笔记

类型

在这里插入图片描述


  • 值域与系统为特定类型的值分配的内存量有关,它通常依赖于所运行的计算机,叫做设备或机器相关量。
  • 表达式的两个运算数是整型,该运算就将在整数运算的规则下进行。
    150/100的 结果是1,即使是将结果赋给float变量。

  • 对于任何处理两个值得运算,如果其中一个值是浮点变量或者常量,那么这一运算将作为浮点运算来处理。
    150/100.0结果是1.5

  • 类型转换运算符比其他所有算数运算符的优先级都高。

  • 方法的数值参数会自动转换以匹配期望的类型,但在调用方法时提供正确的参数类型仍然是好的程序设计习惯。


表达式

  • 一元负号运算符比其它算数运算符有更高的优先级。
    C = -a * b;
    将执行-a 乘以b

  • 定义的模运算符%只用于处理整数,它的优先级和乘法、除法的优先级相等。

  • 关系运算符的优先级比所有的算数运算符都低。

  • 和算数运算符和关系运算符相比,&&运算符的优先级更低,但是&& 比|| 运算符优先级高
    !的优先级和一元运算符相同,和二元运算符和关系运算符相比,!的优先级更高


赋值运算符

Objective-C允许算数运算符和赋值运算符进行组合。
特点:
使程序语句更容易书写,
结果表达式通常容易阅读,
编译器在计算表达式时能产生更少的代码。

除逗号运算符以外的所有运算符都比赋值运算符的优先级高,而所有的赋值运算符的优先级相同。

a /= b+c 等同于 a = a / (b + c)

结构

条件判断中,else子句与最近的无else的if语句相对应

if(a)
   if(b) something;
else
   someth;

实际上是
if(a){
   if(b){ 
     something;
   }else {
     something;
   }
}

三元运算符的一种写法

result = flag ? : value;
flag为真则result等于flag,否则result等于value

for循环的变体

for (i = 0, j = 0; i < 10; i++){}
for (i = 0, j = 100; i < 10; i++, j -= 10){}
for (; j != 100; j++){}

两个非负整数的最大公约数

while(v != 0){
    temp = u % v;
    u = v;
    v = temp;
}

最大公约数为u


颠倒显示一串数字

do {
    right = number % 10;
    NSLog(@"%d",right);
    number /= 10;
}while(number != 10);

NaN 和 +inf

nan: not a number 不是数字
inf: infinity 无穷
nan一般是因为对浮点数进行了未定义的操作,如对-1开方
inf一般是因为得到的数值,超出浮点数的表示范围(溢出,即阶码部分超过其能表示的最大值);

浮点数类型除以0 产生 +inf ,对这个值@{@“key”😡(+inf)} 进行json处理也会导致崩溃。
变量 /变量(0)会崩溃 crash: Thread 1: EXC_ARITHMETIC (code=EXC_I386_DIV, subcode=0x0)
变量 /变量(0.0)不崩溃,会产生随机数。
NaN或者+inf并不会直接导致崩溃,但是在后期运算中可能导致崩溃

判断方法

if (isnan(a)) {
    NSLog(@"NaN");
}
   
if (isinf(b)) {
    NSLog(@"+inf");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值