第三章、基本运算

(运算符、算数运算符、关系运算符、逻辑运算符、三目运算符、ASXLL码)

一、什么是运算符?

概念:是编译程序执行特定的算术或逻辑操作的符号;

分类:算术运算符、 关系运算符、逻辑运算符、按位运算符。

按照运算操作数分为:

  1. 单目运算:只有一个操作数 如 : i++       !       sizeof
  2. 双目运算:有两个操作数 如 : a+b
  3. 三目预算:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0

运算遵循规则:数学的运算规则,先看优先级,再看结合律(从左到右【赋值运算为从右往左x=y=z】);

二、算术运算

“ + ”加法运算符  “ - ”减法运算符  “ * ” 乘法运算符  “ / ”除法运算符  “ % ” 取余运算符.

  • 1.不同数据类型精度不一样.double>float>int.  取余运算符只能整数;
  • 2.若用高精度向低精度变量赋值.会丢失精度.如:int a=1.8;那么a值是1.(非四舍五入)
  • 3.运算优先级是.从左到右 但: * = / = % > + = -  如果要人为改变则加().
  • 4.运算时两个数据精度不一样,会自动类型转换,且是低精度向高精度转换.
  • 5.同精度运算只能得到同精度的结果.如果需要提高精度,需要强制类型转换.

三、赋值运算

概念:把“=”号右面的值赋值给左边的变量;

注意:等号的左边一定是变量;

  • a=10; 对;
  • 10=a; 错;

复合赋值运算符:+=,  -=,  *=,  /=,  %=;

四、自增自减运算符:

概念:让连接的操作数自身的值+1或者-1

  1. “ ++ ” 自增运算符
  2. “ - - ”自减运算符
格式: 变量名++           ++ 变量名         变量名--             -- 变量名 
  • 1.变量才能自我变化,如自增或自减,但常量不能.
  • 2. ++a,与a++,对a本身没有区别,但是参与其它运算时,a++这个整体的值没有变化.

五、siziof运算符

概念:计算常量、变量、数据类型在我们内存中占用的字节数;

用法:

  1. 常量上 : sizeof(10) sizeof(2.3) sizeof('a') ;
  2. 变量上:int a; sizeof(a);
  3. 数据类型上:sizeof(int) sizeof(float) sizeof(char);
注意事项:
  1. sizeof不是一个函数,是一个运算符;
  2. sizeof('a') 4个字节,字符型的常量在C标准的编译中用int型存储的 ;

六、关系运算

“ == ”    “ > ”    “ < ”   “ >= ”    “ <= ”     “!=”

用法:对数据进行比较,看是否成立,条件成立=真(1),条件不成立=假(0).

  • 1.关系运算符运算结果是一个int值.0或1.
  • 2.优先级:>,<,>=,<=,优先级相等, 但大于==和!=.同时==与!=优先级相等.
  • 3.如果优先级相同的两个运算,先后顺序看结合律(结合律指要么从左往右运算,要么从右往左运算),关系运算符结合律是从左往右,即:先看优先级,再看结合律.如下:

int b=1!=2>3<4; 等效于:2>3为假=0. 0<4为真=1, 1!=1为假=0.所以最终结果=0;

七、逻辑运算

“ ||”或     “ && ”与     “ ! ”非

用法:对于多个表达式进行并列真假判断

  1. ||只要有一边的表达式为真,则结果为真1,两边都不成立,则结果为假0.
  2. &&必须两边全部为真才为真,只要有一边的表达式为假,结果为假.
  3. !则是取当前结果的反面.真假调换.

注意:

  • 1.所有数据都有真假值.0为假,其它的数都为真(规定).   结合律:从左往右执行,
  • 2. 如果||表达式左边表达式已经为真,则右边不执行.而&&只要左边为假右边不执行.
  • 3.优先级顺序为:小括号() > 负号( -) > ! > 算术运算符 > 关系运算符 > && > ||

八、三目运算符--(可读性差,一般不用)

定义:

<真假判断表达式1>?<表达式2>:<表达式3>;

如: 1+2>4?2+2:3+4; 这个运算过程为:1+2=3, 3>4为假.则运行3+4这个表达式.所以最终结果为7.

九、ASCLL码

概念:美国标准信息交换码

字符运算会自动转换成ASCLL表对应的值:

‘a’-‘b’ =( 97-98)

常用:

  1. 48~57为0到9十个阿拉伯数字;
  2. 65~90为26个大写英文字母;
  3. 97~122号为26个小写英文字母;

第二章、流程控制

(顺序结构、选择结构--if/swich、循环结构--do...while/for)

一、程序的结构

1.默认(顺序结构):从上到下顺序执行

2.选择结构

是指编程中用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作其中的一个

if分支语句:

--当程序执行的过程中有多个选择时使用

格式:

1.if(表达式){

语句块;

}

2.if(表达式1){

语句块1;

}else if(表达式2){

语句块2;

}else{

语句块3;

}

等等............

表达式求值:如果表达式的值为非0(真) 会执行语句块 0 (假) 不会执行语句块,;

注意:

  • 1.一次if语句只能执行给出的所有操作中的一个.
  • 2.if();这种用法时if语句只有紧跟后面一句有效.(读到下一个;号结束).且不能定义变量
  • 3.除了if();这种用法,所有的if()与{}之间不能有;号
  • 4.if(条件判断){},里面的条件判断如果是与常量的等于判断,则常量写在前面(建议);
  • 5.if(1)、if(-1)、if(a=5) 永真     if(0) 永假 ;
  • 6.if(表达式) return 0; //程序退出,代码不会再往下执行了

swich分支语句

--同if一样也用于条件判断,当表达式的结果有多种情况时用switch比较方便

格式:

switch(表达式){                        --->表达式:返回值是整型

case 常量1: 语句1;     --->常量必须是整型

break;

case 常量n; 语句n;     --->语句中定义变量会造成作用于紊乱:(int a=10)错!

break;

default:  语句n;

如果上面条件都不满足执行default;

}

注意:

  • 1.条件结果只能是整数,而case只能是整型常量.注意:case ‘a’;
  • 2.break 可有可无,有则执行完跳出,没有则继续执行,直到遇到下一个break或执行完.
  • 3.default可有可无,有则如果条件都不满足,会执行这句,无则条件都不满足,执行结束.
  • 4.case下面要定义变量必须加{}.且case后的常量值不能重复
  • 5.switch语句可以全部用if语句替代.但if语句不能全用switch替代.

break和continue关键字使用:

概念:

break和continue语句都可以用在循环中,用来跳出循环(结束循环);

break语句还可以用 在switch语句中,用来跳出switch语句。

注意:

// if(表达式)else{ ...... break;......}

1)break语句对if-else的条件语句不起作用;

2)在多层循环中,一个break语句只向外跳一层。

3)continue表示跳过本次循环,而不是跳出循环体;

3.循环语句

概念:

是指编程循环语句,当满足条件时进入循环,循环判断,直到不满足条件跳出循环,根据条件反复执行一段代码的时候用

1.while语句:

格式:

while (条件) {   ---先判断再执行:条件为真执行代码块,条件为假不执行;

语句块;

}

注意:

int num = 3;

while (3 == num) {

printf("num = %d\n",num);

num++;

}

1、通常把常量写在前面

2、while 后如果只有一条语句它可以省略大括号

3、while小阔号后面不可以直接写分号(没有意义)

4、作用域:内部代码块中定义的变量不可以在外边代码块中访问

5、作用域紊乱:while (1 < 3) int num = 5;

6、最简单死循环(条件一直为真,循环无法结束):while (1);

2.do...whlie语句:

格式:

do{

语句块;

} while(条件);

特点:与while相比,先执行后判断,至少会执行一次语句块;

3.for语句:

格式:

for(表达式1 ;表达式2 ;表达式3 ){     ---3个语句,2个分号隔开。

语句块4;

}

执行过程:

1—>2—>4—>3—>2—>4—>3......

表达式1:循环变量初赋值,开始前执行,只执行一次;

表达式2:循环条件,为真,就执行语句块4的代码。为假,循环结束;

表达式3:循环变量增值:每次执行完毕后执行;

注意:

  • 1.如果碰到continue,则跳出本次循环继续下一次判断,如果条件成立继续执行循环.
  • 2.如果碰到break无论条件满足与否,循环立刻结束.
  • 3.continue与break跳出的都是当前所在的循环作用域.如果外层有循环,不受影响.
  • for(; ;) 语句相当于while(1) 语句,为死循环。

for循环的嵌套:

1.for(int a=0;a<5;a++){

语句块1;

for(int b=0;b<10;b++){

语句块2;

}

}

核心:

  1. 外层for循环执行一次,内层执行10次;
  2. 打印图形:外层控制行数:为5行(a<5),内层控制列数:为10列(b<10);

案例1:(while)

 思路:
)接收用户输入的字符串
)判断用户是不是敲了回车键
//定义字符变量接收字符
char ch;
//定义一个计数器变量,用于保存字符的个数
int count=;
//接收用户输入的字符串的第一个字符
scanf("%c",&ch);
//通过循环依次获取输入缓冲区的其他字符
//ch = '\n' 判断取到的字符是否是换行符
//此处如果是换行符,表示用户输入结束
while (ch!='\n') {
//计数器+1
count++;
//再次获取输入缓冲区的下一个字符 scanf("%c",&ch);
}
}
//打印计数器的值 printf("count = %d\n",count);

统计从键盘输入一行字符的个数

案例2:(while,switch)

 思路: 

 )一直循环等待用户输入

 )输入四个字符,打印对应的方向

 switch

 //定义变量存储用户输入的内容

 char ch;

 //定义标志,0-正常,1-退出
int flag=;
printf("请控制小人移动:w.上 s.下 a.左 d.右 q.退出\n"); while (!flag) { scanf("%c",&ch); switch (ch) { //判断用户输入了大写和小写的w的情况 case 'w':
case 'W': printf("上\n"); break; //判断用户输入了大写和小写的s的情况 case 's': case 'S': printf("下\n"); break; //判断用户输入了大写和小写的a的情况 case 'a':
case 'A': printf("左\n"); break; //判断用户输入了大写和小写的d的情况 case 'd':
case 'D': printf("右\n"); break; case 'q': case 'Q': printf("已退出\n"); flag = ;
break; } }

输入wsad,打印对应的方向

案例3:(if...else,while)

 思路
//1、定义变量,保存玩家竞猜的数字和电脑随机产生的数字
//2、让电脑随机产生一个1-1000之间的数
/*
难点:如何产生1-1000的数?
arc4random_uniform(1000) 产生的是 0-999之间的整数
arc4random_uniform(1001) 产生的是 0-1000之间的整数,
我们要求的是1-1000,所以不符合
arc4random_uniform(1000)+1 产生的是:0(+1)-999(+1),是 1-1000之间的数
得出结论: 要产生m,n之间的随机数公式
arc4random_uniform(n-m+1)+m
如产生 10-50之间的随机数
arc4random_uniform(50-10+1)+10;
1-1000之间的随机数
arc4random_uniform(1000-1+1)+1
*/
//3、通过循环控制,让用户最多可以竞猜10次
// 判断如果竞猜的数字>随机产生的数

C语言学习总结(二) 运算流程的更多相关文章

  1. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  2. GO语言学习(二)Windows 平台下 LiteIDE 的安装和使用

    1. 安装 Go 语言并设置环境变量 参考GO语言学习(一) 2. MinGW 的下载和安装 Windows 下的 Go 调试还需要安装 MinGW. 2.1 下载安装工具的安装 最新版本下载安装工具 ...

  3. Activiti工作流学习(二)流程实例、执行对象、任务

    一.前言 前面说明了基本的流程部署.定义,启动流程实例等基本操作,下面我们继续来学习流程实例.执行对象.任务. 二.流程实例.执行对象说明 整个Activiti的生命周期经过了如下的几个步骤: 1.流 ...

  4. Dart语言学习(十二) Dart面向对象

    Dart作为一种高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式. 基于mixin的继承方式是指:一个类可以继承自多个父类,相当于其他语言里的多继承. 所有的类都有同一个基类Obje ...

  5. 【GO】GO语言学习笔记二

    基本类型: 布尔型:boolean 整型:int8,byte,int16,int,uint,uintptr等 浮点型:float32,float64 复数类型:complex64,complex128 ...

  6. java入门学习(十二)运算语句 if switch

    这两天在网上做兼职,耽误了些博客见谅哈 欢迎来我的博客:www.taomaipin.com java中的运算语句而且频繁用到的无法就是条件语句和循环语句,包括if,for,while,switch,b ...

  7. C语言学习笔记二---数据类型运算符与表达式

    一.C的基本语法单位 1.标识符:有效长度:31(DOS环境下) 2.关键字:main不是 3.分隔符:空格符,制表符,换行符,换页符 4.注释符:a./*.....*/   b.// 二.C的常用输 ...

  8. c语言学习篇二【基础语法】

    一.定义常量: 使用 #define 预处理器. 使用 const 关键字. #include <stdio.h> int main() { const int LENGTH = 10;/ ...

  9. C语言学习笔记二

    第二章 数组 一,定义: 数组是有序数据的结合,同一数据类型 整型数组     int arr[10]={0,1,2,4,5,6,7,8,9}; 字符数组     char str[6]={'h',' ...

随机推荐

  1. 【03】尽可能使用const

    1.为什么搞出const关键字? const指定一个语义约束,指定一个对象不可修改.如果一个对象不可修改,就应该说出来. 2.const与指针 const可以修饰指向之物,也可以修改指针本身.STL中 ...

  2. Google高级技巧—google Hack★★★★

    google hacking事实上并算不上什么新东西,当时并没有重视这样的技术,觉得webshell什么的,并无太大实际用途.google hacking事实上并非如此简单... 经常使用的googl ...

  3. vim字符编码设置

    vim 编码方式的设置 和所有的流行文本编辑器一样,Vim 可以很好的编辑各种字符编码的文件,这当然包括UCS-2.UTF-8 等流行的 Unicode 编码方式.然而不幸的是,和很多来自 Linux ...

  4. .net System.TypeInitializationException 类型初始值设定项引发异常

    错误原因:静态字段连接数据库内容错误(应为Integrated Security=True) 果然解决! 来自:http://blog.csdn.net/zhang1597116/article/de ...

  5. JavaScript入门(5)

    一.什么是数组? 数组是一个值的集合,每一个值都有一个索引号,从0开始,每个索引都有一个相应的值,根据需要添加更多数值. 好比一个团,团里有很多人.如下使用数组存储5个学生成绩: 二.如何创建数组 使 ...

  6. sql 判断表是否存在

    if object_id(N'tablename',N'U') is not nulldrop table tablenamego if exists (select * from sysobject ...

  7. css position 定位

    fixed 属于绝对定位,相对于浏览器窗口定位 (IE 6不支持)   relative 相对定位,通过设置垂直或水平位置,让这个元素"相对于"它的原始起点进行移动.       ...

  8. MVC3中使用AuthorizeAttribute特性来完成登陆权限的验证

    以前判断用户是否登录,判断用户Session是否为空,一般会在这个页面写使用: if (HttpContext.Session.IsNewSession) { //todo Login } 每个需要验 ...

  9. SQL Server调优系列进阶篇 - 查询优化器的运行方式

    前言 前面我们的几篇文章介绍了一系列关于运算符的基础介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符. ...

  10. 一、Maven环境搭建(windows 环境)

    所需工具 : JDK 1.7    java 环境 Maven 3.3.9  下载最新版本 Windows 7 注 Maven 3.2 要求 JDK 1.6 或以上版本, 而 Maven 3.0/3. ...