------- iOS培训、PHP培训、android培训、java培训、期待与您交流! ----------

了解:

1、关键字、标识符、注释;

2、常量、变量

3、进制

4、变量与内存

5、基本数据类型

6、基本运算

7、流程控制

一、关键字、标识符、注释

(一) 关键字:

1、关键字:C语言提供的有特殊含义的符号,叫“关键字”,也叫“保留字”;

2、一共有哪些关键字:(C语言提供了共32个关键字,这些都被C语言赋予了特殊含义)

auto

double

int

struct

break

else

long

switch

case

enum

register

typedef

char

return

union

const

float

short

unregister

continue

for

signed

void

default

goto

sizeof

volatile

do

if

while

static

3、如何辨别关键字:

1> 全是小写;

2> 在开发工具或只能文本编辑工具(如:UITraEdit)中会显特殊颜色;

(二) 标识符:

1、标识符:在程序中自定义的符号和名称,要与关键字区分:关键字是C语言默认提供的符号,标识符是自定义的;

2、标识符作用:

1> 标识符:为了将一些东西区分开,如:人姓名;

2> 函数的名称就是标识符的一种,变量的名称也是标识符;

3、标识符命名规则:

1> 只能由26个英文字母的大小写、10个阿拉伯数字、下划线_组成;

2> 严格区分大小写;

3> 不能以数字开头;

4> 不能使用关键字作为标识符;

4、标识符命名规范:

1> 尽量起有意义的名称;

2> 使用驼峰标识(除第一个单词外,后面每个单词首字母大写)或使用下划线来链接多个单词;

(三) 注释:

1、注释:注解;

2、注释种类:

1> 单行注释:// 注释的内容

2> 多行注释:/* 注释的内容 */

3、注释嵌套:

1> 单行注释可嵌套多行注释或单行注释;

2> 多行注释可嵌套单行注释;

3> 多行注释不能嵌套多行注释;

4、注释细节:

1> 注释是写给别人看的,不是给计算机看的,因此,当编译程序时并不会将注释编译到目标文件中,所以被注释的语句是不会被执行的;

2> 要养成注释的习惯:可回顾代码的作用;

5、注释隐藏的功能:

1> 排错;

2> 检查代码:把注释前后的代码运行效果作对比,看有没有少效果;

二、常量、变量

(一) 数据的存储

1、数据类型:

1> 静态数据:

① 静态数据是一些永久性数据,一般存储在硬盘中;

② 存储时长:只要不删除,这些数据永远都在;

③ 静态数据一般以文件形式存储在硬盘上,如:视频、照片等;

2> 动态数据:

① 在程序运行过程中,动态产生的临时数据,一般存储在内存中;

② 存储时长:计算机关闭后或程序停止运行,就会被清除;

③ 当程序运行时,整个程序就会被加载到内存中,在程序运行过程中会产生各种临时数据,这些临时数据都存储在内存中,当程序停止运行或计算机强制关闭,这个程序产生的所有临时数据都会被清除;

说明:应用程序加载到内存:内存的访问速度> 硬盘的N倍;

3> 动态数据和静态数据的转换:

① 静态数据==>动态:首先打开暴风影音,计算机会将暴风影音加载到内存中,紧接着计算机会读取硬盘中的视频文件内容到内存中,暴风影音会解析读取到的文件内容以视频的形式呈现给用户看;

② 动态数据==>静态:首先打开迅雷软件,计算机会将迅雷加载到内存中,紧接着迅雷就会从互联网下载视频文件,下载过程需消耗时间,每个时间段下载获取的数据都先放到内存中,然后在写入到硬盘中,待所有数据下载完毕后,硬盘中就会有一个完整的视频文件;

2、存储格式:

1> 二进制存储:计算机只能识别0和1,因此静态数据和动态数据都是以0和1的形式存储的,若有n位数字,就表示有2的n次方种数据,可发现,只要位数足够,0和1所能表示的数据是非常庞大的;

2> 比特位和字节:

① 为方便计算文件大小,对计量单位做了规定:1个二进制位=1bit,也就是1个0或1=1bit,bit用中文翻译为“比特位”;

② 常用计量单位:

8bit =1byte(byte中文翻译为“字节”,简写为“B”)、1KB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB

(二) 数据类型:

1、基本数据类型:int、float、double、char;

2、指针类型:void *;

3、空类型:void;

4、构造类型:数组、结构体struct、共用体union、枚举enum;

(三) 常量

1、常量:固定不可改变的数据;

2、常量类型:

1> 整型常量:int;

2> 浮点型常量:

① double双精度浮点型:小数,0.0也算小数;

② float单精度浮点型:小数,比double精确程度低,所能表示的小数位数少,以“f”结尾,只允许小数以“f”结尾;

3> 字符型常量:char

① 将一个数字、英文字母、其它符号用单引号括起来;

② 单引号只能括住1个字符,且不能为中文;

4> 字符串常量:将1个或多个字符用双引号(“”)括起来;

(四) 变量

1、变量:可改变的量;

2、变量的定义:

说明:① 任何变量在使用之前,必须先进行定义;

② 定义变量的目的:在内存中分配一块存储空间给变量,方便以后存储数据,若定义了多个变量,就会为多个变量分配不同的存储空间;

1> 变量类型:

① 定义变量时,需指明变量类型,系统会根据变量类型来分配相应的存储空间,不同的变量类型所占用的存储空间是不一样的;

② 变量类型可用来约束变量所存放数据的类型,一旦指明了变量的类型,则这个变量就只能存储这种类型的数据;

2> 变量名:为区分变量,定义变量时应为每个变量置顶一个变量名,变量名也是标识符的一种,当需修改变量的数据时,系统会根据变量名找到变量对应的存储空间,将存储空间里的数据改掉;

3> 定义:

① 定义变量的格式:变量类型 变量名;(如:int age;)

② 同一类型变量,可连续定义,变量名以逗号隔开:变量类型 变量名1,变量名2,...;(如:int age,num;)

3、变量的作用:

1> 先定义再使用:

① 给变量第一次赋值,叫“初始化”;

② 变量赋值格式:变量名=值;(如:age = 10;)

③ 格式中的“=”是赋值运算符,将右边的值赋值给左边变量,也就是将右边的值存储到左边变量的存储空间中;

2> 定义的同时初始化:变量类型 变量名=值;(如:int age = 10;)

3> 可不断修改(如:int age=10;age = 20;)

4> const关键字:变量的值只初始化一次,以后都不能再改变,使用格式:const变量类型 变量名=值;(如:const int age=10;)

4、变量的使用注意:

1> 不能重复定义同一个变量(但在不同作用域中允许有同名的变量,系统会为它们分配不同的存储空间);

2> 可将一个变量的值赋给另一个变量;

3> 变量的作用域是从定义变量的那一行代码开始;

三、进制

说明:①“进制”是一种计数方式;

②常见进制:十进制、二进制、八进制、十六进制;

(一)  十进制:

1、概念:由0-9组成;

2、运算:“逢十进一”;

(二) 二进制:

1、概念:由0和1组成,当最高位为0表示正数,当最高位为1表示负数;;

2、运算:“逢二进一”;

3、细节:以0b或0B开头;

4、二进制转十进制:

说明: 进制中有“基数”概念,基数是用来计算数值的;

1> 十进制基数为10:

1230 = 0 * 100 + 3 * 101 + 2 * 102 + 1 * 10= 0 * 1 + 3 * 10 + 2 * 100 + 1 * 1000

二进制的基数为2:(二进制 转 十进制)

0b1011 = 1 * 20 + 1 * 21 + 0 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 0 * 4 + 1 * 8 = 1 + 2 + 0 + 8 = 11

(三) 八进制:

1、概念:由0-7组成;

2、运算:“逢八进一”;

3、细节:以0开头;

4、八进制转十进制:

1> 八进制基数为8:

027 = 7 * 80 + 2 * 81 = 7 * 1 + 2 * 8 = 23

5、二进制转八进制:(从右到左,每3位分组,不够在左边添0)

0b11110011 = 0b 011  110  011  = 0363

八进制转二进制:(用3位二进制数表示1位八进制数)

025 = 0b 010  101 0b10101

(四) 十六进制:

1、概念:由0-9和A-F组成;

2、运算:“逢十六进一”;

3、细节:以0x或0X开头;

4、十六进制转十进制:

1> 十六进制基数为16:

0x2F = 15 * 160 + 2 * 161 = 15 * 1 + 2 * 16 = 47

5、二进制转十六进制:(从右到左,每4位分组,不够在左边添0)

0b11110011 = 0b 1111  0011  = 0xF3

十六进制转二进制:(用4位二进制数表示1位十六进制数)

0x25 = 0b 0010  0101=0b100101

(五) 变量与进制

1、定义变量,初始化,存储的为十进制数,这个变量a在内存中是以二进制数形式存储;

2、除了十进制整数,还可将其它进制的整数赋值给整型变量;

(六) printf的简单使用

1、使用printf输出整型变量:

1> 使用printf就需添加#include <stdio.h>;

2> 利用printf输出一个整型变量,就必须先说明输出格式;

3> 使用格式符%d输出整型变量值:表用右边变量a的值替代%d的位置进行输出,并以十进制格式输出;

printf("变量a的值是:%d\n",a);// 使用\n输出后回车换行

2、printf支持的格式符:(红色表示常用)

注意:① 保留2位小数:%.2f;

② 占用宽度:%3f;

3、printf可同时输出多个数值:

printf("age = %d,no =%d",age,no);

4、printf也可输出常量:

printf("输出的常量为%d",11);

四、变量与内存

说明:① 定义一个变量时,系统会为变量分配一块存储空间;

② 变量的数值在内存中以二进制形式存储;

(一) 字节和地址:

1、计算机中的内存以字节为单位存储空间的,每个字节都有个唯一的编号叫地址;

2、地址采用十六进制来显示,可随便写;

3、内存中相邻字节的地址时连续的;

(二) 变量的存储:

1、变量类型的作用:变量类型决定来变量占用的存储空间,因此定义变量类型,是为了给该变量分配适当的存储空间,以便存放数据;

2、变量占用多少存储空间:

1> 一个变量所占用的存储空间,不仅跟变量类型有关,且跟编译器环境有关。因此,同一种类型变量在不同编译器环境下所占用的存储空间是不一样的;

2> 不同环境下的存储空间占用情况:

3、变量事例:

char a = 'A';   int b = 10;

注意:“存储内容”列的一个小格子代表一个字节,“地址”列指每个字节的地址

① 每个字节都有自己的地址,其实变量也有地址。变量存储单元的第一个字节的地址就是该变量的地址。变量a的地址是ffc5,变量b的地址是ffc1。

② 内存寻址是从大到小的,也就是说做什么事都会先从内存地址较大的字节开始,因此系统会优先分配地址值较大的字节给变量。由于是先定义变量a、后定义变量b,因此你会看到变量a的地址ffc5比变量b的地址ffc1大。

③ 由于内存寻址是从大到小的,所以是从内存地址最大的字节开始存储数据,存放顺序是ffc4 -> ffc3 -> ffc2 -> ffc1中。

4、查看变量的内存地址:(使用%p输出地址)

printf("变量a的内存地址是:%p",&a);

注意:

① 地址运算符&:&a表示取得变量a的地址;

② 格式符%p:专门用来输出地址;

(三) 负数的二进制形式:

1、任何数值在内存中都以补码的形式存储的;

1> 正数的补码与原码相同;(如:9的原码和补码都是1001)

2> 负数的补码=它正数的原码取反再+1;(取反:0变1,1变0)

(四) 变量的作用域:

1、作用域简介:定义变量那行开始,一直到它所在{}结束,一旦离开此范围变量就失效了;

2、代码块:

1> 代码块:用大括号{}括住的一块代码;

2> C语言中不同作用域下有相同的变量,赋值则采用就近原则;

(五) 变量的初始化:变量未进行初始化前,里面存储的为垃圾数据;

五、基本数据类型

说明:C语言有丰富的数据类型,适合用来编写数据库,如DB2、Oracle等大型数据库,其中基本数据类型有:int、float、double、char;

(一) 取值范围

1、int类型取值范围:-231 ~ 231 - 1;

2、各种数据类型取值范围:

3、数值越界:

1> 例子演示:超出下标结果值为0;

2> 结果分析:内存寻址是从大到小,数值越界,数值地址为首地址,因此为0;

3> 结论:若超出变量取值范围,将损失精度得到“垃圾数据”(非想要的数据),若确实需存储很大的整数,就需用类型说明符。

(二) 字符型char

1、简单使用:存储字符,使用%c来表示以字符格式输出;

2、字符常量一定要用单引号括住:(如:char c = 'A';)

3、字符型变量还可当整型变量使用:(若整数不大(-10 ~120),可使用char代替int:char c = -10; )

4、字符型变量只能存储单字节字符:

1> 字符有2种类型:

① 单字节字符:在内存种占用1个字节的字符,包括26个英文字母大小写,10个阿拉伯数字等字符;

② 双字节字符:在内存中占用2个字节的字符。包括中国、日本和韩国等国家的文字,如汉字;

说明:1个字符型变量只占用1个字节,所以1个字符型变量只能存储1个单字节字符;

5、字符型变量不能存储汉字:(原则:单引号括住的必须是单字节字符);

6、ASCII

1> ASCLII是基于拉丁字母的一套电脑编码系统,是现今最通用的单字节编码系统,起始就是一个字符集-字符的集合;

2> ASCII字符集包括了:所有的大写和小写英文字母,数字0到9,标点符号,以及一些特殊控制字符:如退格、删除、制表、回车,一共128个字符,全部都是“单字节字符”;

3>在计算机中的任何数据都是以二进制形式存储的,因此每个ASCII字符在内存中是以二进制形式存储的,而且只占用1个字节,二进制数的值就称为这个ASCII字符的ASCII值。比如大写字母A在内存中的二进制形式是:0100 0001,那么它的ASCII值就是65;

4>下面是一张ASCII码字符表,ASCII码值的范围是0~127;

5>我们都知道1个char型变量只占用1个字节的存储空间,而所有的ASCII字符都是单字节字符,因此char变量能存储任何ASCII字符。而且在使用char型变量存储ASCII字符时,可以直接用ASCII字符,也可以用ASCII值;

(三)说明符

1、说明符:为解决数值越界问题,增大各类型变量长度的符号;

1> C语言提供4种说明符:(都属于关键字)

① 短型 short;

② 长型 long;

③ 有符号型 signed;

④ 无符号型 unsigned;

2、用法演示:

// 短型 int类型

short int s1 = 1;  ===short s1 = 1;

// 长型 int类型

long int l1 = 2; ==== long l1 = 2;

// 长型 long类型

long long l1 = 10;

// 有符号 int类型

signed int s1 = 3; ==== signed s1 = 3;

// 无符号 int类型

unsigned int us1 = 4; ==== unsigned us2 = 4;

// 可同时使用2种修饰符

signed short int ss = 5;

unsigned long int u1 = 6;

3、short 和long

1> short和long可改变整型数的取值范围,因此,若需整型数不大就是用short代替int,可节省开销内存;

2> 不同编译器下,int、short和long取值范围和占用长度不同,因此ANSI/ISO制定了规则:

① short和int至少为16位(2字节);

② long至少为32位(4字节);

③ short的长度<int,int的长度<long;

④ char一定为8位(1字节),是编程能用的最小数据类型;

3> 可连续使用2个long(如:long long),一般来说,long long的范围>long,如:(32位编译器下)long long占用8字节,long占4字节,(64位编译器下)long long=long=8字节;

4> shortint 等价于short,long int 等价于long,long long int 等价于long long;

4、long的使用注意:

1> 常量:long类型的在数值后面加上“l”字母结尾,若为long long类型就在数值后加“ll”字母结尾;

2> 输出:long类型数据使用格式符%ld输出,long long类型数据使用格式符%lld输出;

5、signed和unsigned

1> signedint 等价于 signed,unsigned int 等价于unsigned;

2> signed和int区别在于它们的最高位是否要当作符号位:

① signed:表有符号,最高位要当做符号位,包括正数、负数和0,其实int最高位本就是符号,已包括正负数和0了,因此signed和int是一样的,signed 等价于signed int,也等价于int;

② unsigend:表无符号,最高位不做符号位,因此无负数;

6、signed、unsigned也可修饰char、long,还可以修饰double:

unsigned char c1 = 10;  
signed char c2 = -10;
longdouble d1 = 12.0;

7、不同数据类型所占用的存储空间:

(四) 自动类型提升

1、自动类型提升:系统会自动对占用内存较少的类型做“自动类型提升”,但只在运算过程中进行,并不改变原本变量的类型;

2、常见自动类型提升:

floata = 10 + 3.45f;// int 提升为float

intb = 'A' + 32;// char 提升为 int

doublec = 10.3f + 5.7;// float 提升为 double

(五) 强制类型转换

1、强制类型转换:

1> 由于C语言语法限制不严格,系统会自动强制转换;(大类型转小类型)

int i = 10.7;

printf("%d",i);

2> 手动强制转换:

int i = (int) 10.7;

printf("%d",i);

2、常见强制类型转换:

int a = 1981;// long 转为 int

char b = 65;// int 转为 char

int c = 10.73;// float 转为 int

3、其他语法:强制类型转换可以为大类型转为小类型,也可由小类型转为大类型;

六、基本运算

说明:① C语言无所不能:不仅有丰富的数据类型,还有强大的计算能力;

② C语言一共有34种运算符;

(一) 算术运算符:

1、 简单运算:

① 加法运算符:(+)

int a =10;

int b = a+ 5;

② 减法运算/负值运算符(-):

int b = 10- 5;

int a =-10;

③ 乘法运算符(*):

int b = 10* 5;

④ 除法运算符(/):同数据类型的值才能运算,且结果依然为同一类型

double a =10.0 / 4;

double b =10 / 4 ;

⑤ 取模/余运算(%):%两侧必须为整数

正数取余:int a =5 % 2;

负数取余:int a =-5 % 2;

2、运算顺序:

1> 算术表达式:表达式运算顺序按运算符的结合方向与优先级进行;

① 结合方向:从左到右;

② 优先级:从高到低;

③ 优先级排序(小括号优先级最高):负值(-)>乘(*)除(/)> 模(%)> 加(+)> 减(-);

(二) 赋值运算符:

说明:赋值运算符分为:简单赋值运算符 和 复合赋值运算符;

1、简单赋值运算符(=):

1> 简单运算符(=):作用是将右边的值赋值给左边,优先级 < 算术运算符;

int a = 10 + 5;

2> 连续赋值:

int a,b;

a= b = 10;

3> 使用注意:(常量不能进行赋值运算)等号(=)左边只能是变量,不能是常量;(如:10 = 10 + 5;//错误的)

2、符合赋值运算符:

①加赋值运算符(+=):(如:a += 3 + 2,等价于 a = a + (3 + 2));

②减赋值运算符(-=):(如:a -= 3 + 2,等价于 a = a - (3 + 2));

③乘赋值运算符(*=):(如:a *= 3 + 2,等价于 a = a * (3 + 2));

④除赋值运算符(/=):(如:a /= 3 + 2,等价于 a = a / (3 + 2));

⑤取余赋值运算符(%=):(如:a %= 3 + 2;等价于 a = a % (3 + 2));

(三) 自增/自减运算符:(常量不能进行自增/减运算)

1、自增运算符(++);(如:a++ 或 ++a)

2、自减运算符(--);(如:a-- 或 --a)

3、a++ 与++a区别:

1> 单独使用时,无区别;

2> 涉及运算自增:

①int a = 10;

intb = ++a; // a= b=11 先自增再运算

②int a = 10;

intb = a++; // a=11,b=10 先运算再自增

3> 注意:

inta = 10;

a= a++; // a = 10

(四) sizeof

1、sizeof可用来计算一个变量或常量、一种数据类型所占内存字节数;

2、sizeof形式:

1> sizeof(变量/常量)

sizeof(10);//常量

charc = 'a'; //变量

sizeof(c);

2> sizeof 变量/常量

sizeof10;// 常量

charc = 'a';// 变量

sizeofc;

3> sizeof(数据类型)

sizeof(float);// 不能写成sizeof float

(五) 逗号运算符

1、逗号运算符主要用于链接表达式:

①使用格式:表达式1,表达式2....表达式n;

例:int a = 2; int b = 0;int c;

c= (++a,a*=2,b=a*5);

②运算过程:从左到右顺序,计算表达式1-n;

③整个逗号表达式的值:最后一个表达式的值;(c = 30)

④注意:逗号运算符右边的表达式是用括号包住的

(六) 关系运算符

1、"真" 与 ”假“:

1> C语言中,条件成立为”真“,条件不成立为”假“;

2> C语言规定:任何非0值为”真“,只有0才为”假“;

2、关系运算符的简单使用:比较2个数值大小,返回0或1;

3、关系运算符的使用注意:

1> 结合方向:从左往右;

2> 优先级:

① == 与 != 优先级相等;

② < 、<= 、> 、>= 优先级相等;

③ 前者①优先级 > 后者②;

3> 关系运算符的优先级< 算术运算符;

(七) 逻辑运算符

说明:① C语言提供了3种逻辑运算符(英文字符):逻辑与(&&)、逻辑或(||)、逻辑非(!);

② 逻辑运算结果只有2个:”真“为1,”假“为0;

1、逻辑与(&&):

1> 使用格式:条件A&& 条件B;

2> 运算结果:条件之一若不成立,就为0;

3> 运算过程:从左往右;

2、逻辑或(||):

1> 使用格式:条件A || 条件B;

2> 运算结果:条件之一成立,就为0;

3、逻辑非(!):

1> 使用格式:! 条件A

2> 运算结果:条件A成立,就为0;

3> 注意:!!表肯定,依次类推;

4、逻辑运算符优先级:小括号 > 负号 > ! > 算术运算符 > 关系运算符 > && > || ;

(八) 三目运算符

1、N目运算符:只连接一个数据符号,称单目运算符;

2、三目运算符(条件运算符):

1> 使用格式:表达式A ?表达式B :表达式C;

2> 运算结果:A成立就返回B,否则返回C;

3> 结合方向:从右往左;

4> 优先级顺序:算术运算符 > 关系运算符 > 条件运算符 > 赋值运算符;

(九) 位运算符:

说明:① 位运算是对每个二进制位进行运算;

② C语言共提供6种只能对整数操作的运算符:按位与&、按位或|、按位异或^、左移<<、右移>>、取反~;

1、按位与(&):

1> 使用格式:整数a& 整数b;

2> 功能:对应2个二进位都为1时,才为1,否则为0,参与运算的数以补码方式出现;

如:9 & 5,起始就是:1001 & 101 =1,因此 9 & 5 = 1;

3> 规律:

① 相同整数相&的结果为整数本身;(如:5&5=5)

② 多个整数相&的结果跟顺序无关;(如:4&6&7=5&7&6)

2、按位或(|):

1> 使用格式:整数a | 整数b;

2> 功能:对应2个二进位有一个1时,就为1,否则为0,参与运算的数以补码方式出现;

如:9 | 5,起始就是:1001 | 101 =1101,因此 9 | 5 = 13;

3>  规律:

① 相同整数相 | 的结果为整数本身;(如:5 | 5=5)

② 多个整数相 | 的结果跟顺序无关;(如:4 | 6 | 7=5 | 7 | 6)

3、按位异或(^):

1> 使用格式:整数a ^ 整数b;

2> 功能:对应的二进制位相异(不同)时,为1,否则为0。参与运算的数以补码方式出现;

3> 规律:

① 二进制中,与1相 ^ 就会取反,与0相^保持原位;

② 相同整数相^的结果为0;(如:5^5=0)

③ 多个整数相^的结果跟顺序无关;(如:4^6^7=5^7^6)

④ 因此得出:a ^ b ^a = b;

4、取反(~):

1> 取反~为单目运算,具有右结合性,使用形式:~整数a;

2> 功能:对整数a的各二进位取反(0变1,1变0);

 如:~9,起始就是~(0000 0000 0000 0000 0000 0000 00001001)=(1111 1111 1111 1111 1111 1111 1111 0110); 因此~9 =10;

5、左移(<<):

1> 左移<<是双目运算,使用形式:整数a << 正数b;

2> 功能:将整数a的各二进位全部左移n位,高位丢弃,低位补0.左移n位就是*2的n次方;

 如:3 << 4,3 = 0000 0011,左移4位后为0011 0000,所以 3 << 4 = 48 = 3 * 24

3> 注意:左移是丢弃高位,0补低位,所以符号位也会被丢弃,左移出来结果值可能会改变正负性;

6、右移(>>):

1> 右移>>是双目运算,使用形式:整数a >>正数b;

2> 功能:将整数a的各二进位全部右移n位,符号位不变,右移n位就是/2的n次方;

 如:32 >> 3,32 = 0010 0000,右移3位后为0000 0100,所以 32 >> 3 = 4 = 32 / 23

七、流程控制

1、顺序结构:默认流程结构,按书写顺序执行;

2、选择结构

。IF语句:if或者if...else或者if...else if(程序会挨个执行到条件成立)或者if(例:if(a>1)语句1;注:语句不能定义常变量,因为系统不知道作用域);

。Swich语句:switch...case:(使用break直接退出swich语句);

。if能完成的功能switch不一定能完成(判断大小)、在有些情况下,if与switch语句可互换、switch能完成的功能if一定能完成;

。总结:if(条件1){}else if(条件2){},同一时刻只有一个大括号里的内容会被执行;

。总结:switch(数值){case 数值1:break;},默认情况只有一个case后面的代码会被执行,若一个case后面没有break,且这个case成立,就会按顺序执行后面所有case语句,知道遇到break为止,若在case后定义一个新变量,必须使用{}包住case中内容;

3、循环结构:

。while循环:【while(条件)】:条件判断再执行(条件成立就重复执行,使用continue跳出当前循环体进入下一次循环体的执行),【注意:若一开始条件不成立就不会执行循环体,若条件成立就会执行一次循环体,执行完毕后再次判断条件成立。】;

。do..while循环:【do{}while(条件)】:先执行再判断,至少执行一次;

。for循环:【for(语句1;条件;语句2){}】:for一开始就会执行一次语句1(整个for循环只会执行一次),判断条件是否成立,若成立就会执行一次循环体,然后执行语句2,再次判断条件是否成立(例:for(int i=0;i<10;i++){})【注意:语句1,条件,语句2可省略,例:for(;i<10;)】;

。For循环嵌套使用:外层循环行,内层循环列;

。总结:while:若一开始条件不成立,则永远不会执行循环体;

。总结:do while:不管条件是否成立,至少执行一次;

。总结:for(语句1;条件;语句2):括号内的内容可省略提出来写;

。选择:一般优先选用for ,再考虑while,最后考虑do while;

4、Break与continue区别(就近有效):

。Break适用于直接退出语句;

。Continue适用于跳出本次循环进入下次循环(例:for(i<5){if(i%2){continue;}}注意:i%2表示i为奇数,输出数据为:0、2、4);

总结基本运算:

1、算术运算:

。加+、减-、乘*、除/、取余%;

。取余/模运算:整数%整数、取余后的结果正负性与%前的数值有关;

。自动类型转换(double-->int,例:int num = 10.3;)

。强制类型转换(double-->int,例:int num = (int)10.3);

。整数/整数=整数(例:double b = 3/2,b=1.00000),整or非整/非整or整 = double(例:3.0/2 = 1.50000);

2、赋值运算:

。简单赋值:=(例:int a = 10;);

。复合赋值:+=、-= (例:a = a + 10;---> a +=10; );

。常量不能进行赋值运算:例:a = 10++(错误的);

3、自增自减运算:

。自增:++(例:a=a+1---> a++或者++a);

。自减:--(例:a--或者--a);

。++或--放值前后的区别:a = 10 【 b = ++a;---->b=a=11】、【b = a ++;--->b = 10, a = 11】、【b = (a++)+(++a) ---> b = 10+12=22 ,a=12】、【b = (++a)+(a++) --->b=11+11=22,a=12】;

4、Sizeof:字节计算

。int size = sizeof(10);  printf(“%d”, size); int = 4

。int size = sizeof(double); printf(“%d”, size); size = 8

。PS:int = 4,double = 8,float = 4,char = 1;

。int类型的可转换为:int size = sizeof a;

。char类型的不可转换为:int size = sizeof char;

5、关系/比较运算:

。条件判断:

。真假:0 为假、非0为真;

。关系比较:比较运算符:> 、<、>=、<=、==、!=;

。比较运算符优先级:同一优先级(> 、<、>=、<=)、同一优先级(==、!=),前者“同一优先级”优先于后(例:3=4>1,先运算4>1,再运算3=1),且同一优先级比较则从左往右运算;

。算术运算符优先级>比较运算符(例:2+1=4+3,先计算2+1和4+3再计算=);

6、逻辑运算符:

。逻辑与(条件1 && 条件2):同真为1,否则为0;

。逻辑或(条件1 || 条件2):同假为0,否则为1,

。逻辑非(!条件):条件成立为0,不成立为1(!!表示2次非);

7、三目运算:

。三目运算符: 条件 ?数值1:数值2;

PS:本节主要是对C语言基本语法知识点的整理!

黑马程序员—(iOS开发)C语言语法解析---(三)相关推荐

  1. 黑马程序员——iOS开发须知

    ------- android培训.java培训.iOS培训..Net培训.期待与您交流! ---------- 以下是学习iOS开发之前应了解的相关信息: 1.iOS系统是运行在苹果移动设备上的操作 ...

  2. 黑马程序员-iOS基础-Objective-C基础(六)内存管理

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 黑马程序员-iOS基础-Objective-C基础(六)内存管理 一.内存管理的必要性 移动设备 ...

  3. 直击招聘程序员面试笔试C语言深度解析,直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载...

    直击招聘 程序员面试笔试C++语言深度解析(直击招聘) pdf epub mobi txt 下载 图书介绍 ☆☆☆☆☆ 李春葆,李筱驰 著 下载链接在页面底部 发表于2021-05-18 类似图书 点 ...

  4. 黑马程序员_IOS开发简介和C语言基础

    (一)IOS开发简介: (1)IOS开发: IOS开发就是开发运行在IOS环境系统的软件.apple公司2009年推出开发包和环境,国内2010年iphone4问世,从而相 继出现开发者---> ...

  5. 黑马程序员——ios笔试题——黑马 IOS 技术博客

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 面试能力要求:精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义U ...

  6. 黑马程序员___Java基础[02-Java基础语法](一)

    Java语言基础组成 一.关键字 1)定义:被Java语言赋予了特殊含义的单词 2)特点:关键字中所有字母均为小写 3)作用及分类: 下面是Java语言保留专用的50个关键字: 用于定义数据类型的关键 ...

  7. 黑马程序员——IOS基础---Mac OS X

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 如果你刚开始从事IOS开发,并且对苹果系统环境,不熟悉,从这看起吧. 一.系统简介 1.苹果公司 ...

  8. 黑马程序员-web开发

    ---------------------- android培训.java培训.期待与您交流! ---------------------- <!--html是超文本编辑语言 语法不严谨很宽松 ...

  9. 黑马程序员——ios面试学习一:Mac系统使用教程——黑马 ios 技术博客

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 学习Mac从这里开始!!!   谢谢大家热烈支持, 感动! 你们的支持是我更新的动力!大家留言说 ...

  10. 黑马程序员_java开发前缀

    基础常识   软件开发 ---------------------- android培训. java培训.期待与您交流! ----------------------   软件:按照特定的顺序组织的计 ...

最新文章

  1. Win10 新版又悲剧了!老外神评论
  2. C 语言链表其他实现
  3. 数据结构教程网盘链接_数据结构101:链接列表
  4. 一至七-----小东西
  5. H5前端性能测试总结
  6. Ceilometer - Install the API behind mod_wsgi
  7. [转载] python字符串情感分析_python进行情感分析
  8. atitit.软件开发--socket框架选型--netty vs mina j
  9. 路侧停车系统有利有弊
  10. SEM数据分析之做好关键词报告
  11. 开发者模式(一) 各种姿势进入
  12. 实现数智内控,数据分析创造价值——辽宁烟草智能风险体检系统
  13. 华为:证实已开发出自主操作系统
  14. 车用永磁电机的各种弱磁策略
  15. 树链剖分——树链剖分模板
  16. Redis在多线程高并发下出现数据错乱问题
  17. Class Proxy
  18. C专家编程 第10章 再论指针 10.7 使用指针创建和使用动态数组
  19. mcrypt拓展_PHP mcrypt加密扩展使用总结
  20. cocos2dx入门篇(一)

热门文章

  1. 基于Echarts+HTML5可视化数据大屏展示——智慧物流服务中心
  2. python 滑窗法检测房颤分类
  3. linux重启nginx命令
  4. 沧州渤海中等专业学校计算机有平面设计吗,河北省沧州中等专业学校
  5. 北大C++课后题系列:022:魔兽世界之二:装备
  6. jsp注册里密码强弱怎么弄_vue.js+ElementUI实现进度条提示密码强度效果
  7. Mastercam2017车铣复合多轴编程加工视频教程
  8. 惊艳于红警开源代码?赏心悦目的代码注释,我们也可以 !
  9. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1
  10. Web安全 目录遍历漏洞(带你畅读 服务器中的机密文件.)