黑马程序员——ios基础---C语言:数据类型、运算符、选择结构

时间:2022-11-24 00:27:02
        


一、数据类型复习:


1.什么是标示符

1)标示符就是程序员自己在程序中起的一些名字。

   1)不能和关键字同名。

   2)要有一定得规则。

 

2.标示符的作用

1)标识符,从字面上理解就是用来标识某些东西的符号,标识的目的就是为了将这些东西区分开来

2)为了区分函数以及变量

 

3.命名规则 

1)只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_、美元符号$组成

2)严格区分大小写,

3)不能以数字开头

4)不能与关键字重名


4、数据分类

1)静态数据

2)动态数据

区分方法:在内存中的为动态数据,反之


5、数据大小

计量单位(字节:Byte=>B,比特位:bit)

1 B = 8 bit

1 KB = 1024 B,1MB = 1024 KB

1 GB = 1024 MB,1TB = 1024 GB

不同数据类型表示的范围 

计算一个位数的范围:-2^(n-1)~2^(n-1)-1

  n代表位数 

bool型为布尔型,占1个字节,取值01 

BOOL型为int型,一般认为占4个字节,取值TRUE/FALSE/ERROR。 

sbyte型为有符号8位整数,占1个字节,取值范围在128~127之间。 

bytet型为无符号16位整数,占2个字节,取值范围在0~255之间。 

short型为有符号16位整数,占2个字节,取值范围在-32,768~32,767之间。 

ushort型为无符号16位整数,占2个字节,取值范围在0~65,535之间。 

int型为有符号32位整数,占4个字节,取值范围在-2,147,483,648~2,147,483,647之间。 

uint型为无符号32位整数,占4个字节,取值范围在0~4,294,967,295之间。 

long型为64位有符号整数,占8个字节,取值范围在9,223,372,036,854,775,808~9,223,372,036,854,775,807之间。 

ulong型为64位无符号整数,占8个字节,取值范围在0~18,446,744,073,709,551,615之间。 

float型为32位单精度实数,占4个字节,取值范围3.4E+10的负38次方~3.4E+10的38次方之间。 

double型为64位实数,占8个字节,取值范围1.7E+10的负308次方~1.7E+10的正308次方。 

指针占4个字节。   

注意:int占多少个字节是由编译器决定的,ANSI标准定义int是占2个字节. 

TC是按ANSI标准的,它的int是占2个字节的. 

你可以在TC里试.printf("%d",sizeof(int));结果是2; 

但是在VC里,一个int是占4个字节的,在VC里面, 

printf("%d",sizeof(int)); 

cout<<sizeof(int);结果都是4. 

不同的编译器,规定也不一样. 

float,double也是一样的,在不同的编译器里,占的字节是不一样的 。


6.转义字符

关于printf函数的进一步说明如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示, 

printf("%f%%", 1.0/3); 输出0.333333%  

 

\n 

换行,相当于敲一下回车。 

\t 

跳到下一个tab位置,相当于按一下键盘上的tab键。  

\b 

退格,相当于按一下backspace 

\r 

使光标回到本行开头。 

\f 

换页,光标移到到下页开头。 

\\ 

输出\字符,也就是在屏幕上显示一个\字符。 

\' 

输出'字符,也就是在屏幕上显示一个'字符。 

\" 

输出"字符,也就是在屏幕上显示一个"字符。


各种类型对应的占位符 

1)int %d 

2)float %f 

3)char %c 

4)double %lf 

5)字符串(char *)%s 




 二、运算符复习


1、优先级 

C语言中,运算符的运算优先级共分为15 级。级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。  

 

优先级  

运算符  

名称或含义  

使用形式  

结合方向  

说明  

1  

[]  

数组下标  

数组名[常量表达式 

左到右  

 

 

()  

圆括号  

(表达式)/函数名(形参表 

 

 

 

.  

成员选择(对象 

对象.成员名  

 

 

 

->  

成员选择(指针 

对象指针->成员名  

 

 

2  

-  

负号运算符  

-表达式  

右到左  

单目运算符  

 

(类型 

强制类型转换  

(数据类型)表达式  

 

 

 

++  

自增运算符  

++变量名/变量名++  

 

单目运算符  

 

--  

自减运算符  

--变量名/变量名--  

 

单目运算符  

 

*  

取值运算符  

*指针变量  

 

单目运算符  

 

&  

取地址运算符  

&变量名  

 

单目运算符  

 

!  

逻辑非运算符  

!表达式  

 

单目运算符  

 

~  

按位取反运算符  

~表达式  

 

单目运算符  

 

sizeof  

长度运算符  

sizeof(表达式 

 

 

3  

/  

  

表达式/表达式  

左到右  

双目运算符  

 

*  

  

表达式*表达式  

 

双目运算符  

 

%  

余数(取模 

整型表达式/整型表达式  

 

双目运算符  

4  

+  

  

表达式+表达式  

左到右  

双目运算符  

 

-  

  

表达式-表达式  

 

双目运算符  

5  

<<  

左移  

变量<<表达式  

左到右  

双目运算符  

 

>>  

右移  

变量>>表达式  

 

双目运算符  

6  

>  

大于  

表达式>表达式  

左到右  

双目运算符  

 

>=  

大于等于  

表达式>=表达式  

 

双目运算符  

 

<  

小于  

表达式<表达式  

 

双目运算符  

 

<=  

小于等于  

表达式<=表达式  

 

双目运算符  

7  

==  

等于  

表达式==表达式  

左到右  

双目运算符  

 

!=  

不等于  

表达式!= 表达式  

 

双目运算符  

8  

&  

按位与  

表达式&表达式  

左到右  

双目运算符  

9  

^  

按位异或  

表达式^表达式  

左到右  

双目运算符  

10  

|  

按位或  

表达式|表达式  

左到右  

双目运算符  

11  

&&  

逻辑与  

表达式&&表达式  

左到右  

双目运算符  

12  

||  

逻辑或  

表达式||表达式  

左到右  

双目运算符  

13  

?:  

条件运算符  

表达式1? 表达式2: 表达式 

右到左  

三目运算符  

14  

=  

赋值运算符  

变量=表达式  

右到左  

 

 

/=  

除后赋值  

变量/=表达式  

 

 

 

*=  

乘后赋值  

变量*=表达式  

 

 

 

%=  

取模后赋值  

变量%=表达式  

 

 

 

+=  

加后赋值  

变量+=表达式  

 

 

 

-=  

减后赋值  

变量-=表达式  

 

 

 

<<=  

左移后赋值  

变量<<=表达式  

 

 

 

>>=  

右移后赋值  

变量>>=表达式  

 

 

 

&=  

按位与后赋值  

变量&=表达式  

 

 

 

^=  

按位异或后赋值  

变量^=表达式  

 

 

 

|=  

按位或后赋值  

变量|=表达式  

 

 

15  

,  

逗号运算符  

表达式,表达式,...  

左到右  

从左向右顺序运算 

 

2、在使用强制转换时应注意以下问题:  

1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。  

2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。  


 


 

 

3、C语言中的真假性  

在C语言中所有数值都是有真假性,非零即真,只有0为假,关系运算符返回值只有两个要么是真(1) 要么是假(0) 关系运算符(比较运算符) 

 

4、关系运算符的优先级  

关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=  

==和!=的优先级相同。  


 

5、逻辑表达式的值  

逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:  

 

1) 与运算(&&)  

参与运算的两个量都为真时,结果才为真,否则为假。口诀:一假则假  

 

2) 或运算(||)  

参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。口诀:一真为真  

 

3) 非运算(!)  

参与运算量为真时,结果为假;参与运算量为假时,结果为真。口诀:真变假,假变真  

 

注意:  

1)虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时, 以“0”代表“假”,以非“0”的数值作为“真”  

 

表达式1  

表达式2  

表达式1&&表达式2  

表达式1||表达式2  

!表达式1  

!表达式2  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

 

6、优先级  

逻辑运算符和其它运算符优先级的关系可表示如下: 

 


 7、逻辑运算符的短路问题  

 

与短路:&&  

只要第一个条件表达为假那么后面的条件表达就不参与运算了  

或短路:||  

只要第一个条件表达式为真那么后面的条件表达式就不参与运算了  


三、选择结构复习

1、if ...else ...语句使用  

如果表达式为真,则执行语句块1,否则执行语句块2  

 

if(表达式) 

    语句块1; 

else 

    语句块2; 

 

2、if语句嵌套  

 

if(表达式1) 

   ...... 

    if(表达式2) 

   { 

   } 

    else 

   { 

   } 

   ......} 

else 

 

3、if…else if语句 

如果表达式1为真,则执行语句块1,否则判断表达式2,如果为真执行语句块2,否则再判断表达式3,如果真执行语句块3, 当表达式1、2、3都不满足,会执行最后一个else语句。  

 

if(表达式1) 

    语句块1 

else if(表达式2) 

    语句块2 

else if(表达式3) 

    语句块3 

else 

    语句块4 

 

 -