第一章:数据类型和运算符

一、数据类型分类

(1)、基本类型:整形,字符型,浮点型(float类型,double类型),枚举型;
(2)、构造类型:数组类型,结构体类型,共用体类型;
(3)、指针类型;
(4)、特殊类型:nil 。

1、基本类型:

字节:一般来说

  • char :1
  • short int :2
  • int :4
  • long int :8
  • long long :8
  • float :4
  • double :8
  • long double:16

(1)、整形:

①、例如: int a = 013; —>代表的是八进制整数
八进制整型第一位为0, NSLog 的格式符为: %o 显示的八进制不带前导0,%#o 显示的八进制带前导0
②、例如:int a = 0xaf;或者 int a = 0Xaf;—>代表的是十六进制整数
十六进制以0x 开头的整型,NSLog 的格式符为: %x 显示的十六进制不带前导0x,%#x 显示的十六进制带前导0x,若(%X 或%#X) 显示的十六进制用大写

(2)、NSLog输出格式

NSLog的格式如下所示:

  • %@ 对象
  • %d, %i 整数
  • %u 无符整形
  • %f 浮点/双字
  • %x, %X 二进制整数
  • %o 八进制整数
  • %zu size_t%p 指针
  • %e 浮点/双字 (科学计算)
  • %g 浮点/双字
  • %s C 字符串
  • %.*s Pascal字符串
  • %c 字符
  • %C unichar
  • r%lld 64位长整数
  • (long long)%llu 无符64位长整数
  • %Lf 64位双字

(3)、字符型

字符型(Character)数据是不具计算能力的文字数据类型,用字母C表示。它包括中文字符、英文字符、数字字符和其他ASCⅡ字符,其长度(即字符个数)范围是0-254个字符。
特点:

  • 字符常量只能单括号括起来,不能用双引号或者其他符号;
  • 字符常量只能是单个字符,不能是字符串;
  • 字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如’5’和5是不同的,’5’是字符常量,不能参与数值运算。

(4)、浮点型

  • 1).十进制数形式
    由数码0~ 9和小数点组成。
    例如:0.0,.25,5.789,0.13,5.0,300.,-267.8230等均为合法的实数。
  • 2).指数形式
    由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。其一般形式为a E n (a为十进制数,n为十进制整数)其值为 a*10,n 
    如: 2.1E5 (等于2.1*10的5次方), 3.7E-2 (等于3.7*10的-2次方) 0.5E7 (等于0.5*10的7次方), -2.8E-2 (等于-2.8*10的-2次方),
    以下不是合法的实数:345 (无小数点) E7 (阶码标志E之前无数字)  -5 (无阶码标志) 53.-E3 (负号位置不对) 2.7E (无阶码)
  • 3)浮点型变量:
    实型变量分为两类:单精度型和双精度型,
    其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
    实型变量说明的格式和书写规则与整型相同。
    例如:
    • float x,y; (x,y为单精度实型量)
    • double a,b,c; (a,b,c为双精度实型量)
      实型常数不分单、双精度,都按双精度double型处理

(5)、枚举类型

第一种:是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.
例如:

enum season{
    spring,
    summer,
    fall,
    winter
};
enum season myLove = summer;

第二种:定义匿名枚举类型时直接定义变量
例如:

enum {male,female}me,you;
me = male;
you = female;
NSLog(@"%d,%d",me,you);

注意:

  • 枚举元素或者枚举常量不能被赋值,实际上,每个枚举常量按他们的定义顺序,一次为0、1、2、3…
  • 枚举常量的本质就是无符号整数,因此,枚举值可以用来比较大小

(6)、表达式的自动升级

short->int->long->long long->float->double->long double

二、运算符

算数运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、类型相关运算符。

1、算数运算符

(1)、+:加法运算符

double a = 5.2;
double b = 3.1;
double sum = a + b;
//sum的值为8.3;
NSLog(@"%g",sum);

(2)、-:减法运算符

double a = 5.2;
double b = 3.1;
double sub = a - b;
//sum的值为2.1;
NSLog(@"%g",sub);

(3)、*:乘法运算符

double a = 5.2;
double b = 3.1;
double multiply = a * b;
//multiply的值为16.12;
NSLog(@"%g",multiply);

(4)、/:除法运算符

double a = 5.2;
double b = 3.1;
double div1 = a / b;
int div2 = a / b;
//div1的值为1.67742;
//div2的值为1;
NSLog(@"%g %d",div1,div2);

(5)、%:求余运算符

int a = 5;
int b = 3;
int mod = a % b;
//mod的值为2;
NSLog(@"%d",mod);

(6)、++:自加

  • 第一种:
int a = 5;
//让a先执行算数运算,然后自加;
int b = a++ + 6;
//输出a的值为6,b的值为11;
NSLog(@"a = %d b = %d",a,b);
  • 第二种:
int a = 5;
//让a先自加,然后执行算数运算;
int b = ++a + 6;
//输出a的值为6,b的值为12;
NSLog(@"a = %d b = %d",a,b);

(7)、–:自减

  • 第一种:
int a = 5;
//让a先执行算数运算,然后自减;
int b = a-- + 6;
//输出a的值为4,b的值为11;
NSLog(@"a = %d b = %d",a,b);
  • 第二种:
int a = 5;
//让a先自减,然后执行算数运算;
int b = --a + 6;
//输出a的值为4,b的值为10;
NSLog(@"a = %d b = %d",a,b);

注意:自加和自减只能用于操作变量,不能用于操作数值直接量或常量。

(8)、次方、开放、随机数

double a = 3.2;
//求a的5次方,并将计算结果附为b--335.544
double b = pow(a, 5);
//求a的平方根,并将计算结果附为c--1.78885
double c = sqrt(a);
//计算随机数,返回一个0~10之间的伪随机数
double d = arc4random()%10;
//求a的sin函数值,a被当成弧度数---0.0583741
double e = sin(a);
NSLog(@"%g  %g  %g  %g",b,c,d,e);

2、赋值运算符

(1)、=:直接赋值

double pi = 3.14;
NSString *str = @"Objective-C";

(2)另外几种

 +=:对于x += y,即对应于x = x + y;
 -=:对于x -= y,即对应于x = x - y;
 *=:对于x *= y,即对应于x = x * y;
 /=:对于x /= y,即对应于x = x / y;
 %=:对于x %= y,即对应于x = x % y;
 &=:对于x &= y,即对应于x = x & y;
 |=:对于x |= y,即对应于x = x | y;
 ^=:对于x ^= y,即对应于x = x ^ y;
 <<=:对于x <<= y,即对应于x = x << y;
 >>=:对于x >>= y,即对应于x = x >> y;

3、比较运算符

      >    :(大于)
      >=  :(大于或等于)
      <    :(小于)
      <+  :(小于或等于)
      ==  :(等于)
      !=   :(不等于)

注意:返回值为0或者1;

4、逻辑运算符

  • &&(与):必须前后两个操作数都是真才返回真,否则返回假;
  • ||(或):只要两个操作数中有一个是真,就可以返回真,否则返回假;
  • !(非):只需要一个操作数,如果操作数为真,返回假;如果操作数为假,返回真;
  • ^(异或):当两个操作数不同时才返回真,如果两个操作数相同,则返回假。

5、位运算符

(1)&:按位与
(2)|:按位或
(3)~:按位非
(4)^:按位异或
(5)<<:左位移运算符
(6)>>:右位移运算符

NSLog(@"%d",5&9);//将输出1
NSLog(@"%d",5|9);//将输出13
NSLog(@"%d",~-5);//将输出4
NSLog(@"%d",5^9);//将输出12
NSLog(@"%d",5<<2);//将输出20
NSLog(@"%d",-5<<2);//将输出-20
NSLog(@"%d",-5>>2);//将输出-2

提示:所有的数字在计算机底层都是以二进制形势存在的,原码是直接将一个数值换算成二进制数。但计算机以补码的形式保存所有的整数。补码计算规则如下:正数的补码和原码完全相同,负数的补码是其反码加1;反码是对原码按位取反,只是最高位(符号位)保持不变。

6、逗号运算符

int a = (3 * 4,5 > 2);
NSLog(@"%d",a);//a = 1;
a = (a *= 3,5 < 8);
NSLog(@"%d",a);//a = 1;
int x = (a = 3,a = 5,a = 7,a = 9);
NSLog(@"x = %d",x);

7、三目运算符

NSString *str = (/* DISABLES CODE */ (5) > 3)?@"5大于3":@"5不大于3";
NSLog(@"str = %@",str);//str = 5大于3
/* DISABLES CODE */ (5)>3?NSLog(@"5大于3"):NSLog(@"5不大于3");//输出5大于3

8、运算符的结合性和优先级

单目运算符、赋值运算符和三目运算符是从右向左结合的,即从右向左开始运算的。
其他的运算符是从左向右开始运算的。
优先级:
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值