鹤壁商城网站建设,电子商务网站建设的心得体会,shopify可以做企业网站嘛,网站建设的步骤图片过程运算符代表的是各种各样的运算(操作)已知的运算符#xff1a; - * / (赋值)1.运算符的分类运算符的分类方法很多#xff0c;通常用功能或者操作数个数进行分类功能#xff1a;算数运算符 逻辑运算符 位运算符 地址运算符.......操作数个数#xff1a;单目运算符 双目运算符…运算符代表的是各种各样的运算(操作)已知的运算符 - * / (赋值)1.运算符的分类运算符的分类方法很多通常用功能或者操作数个数进行分类功能算数运算符 逻辑运算符 位运算符 地址运算符.......操作数个数单目运算符 双目运算符 三目运算符(1)算数运算符 - * / %(取余)自增运算符()和自减运算符(--)的作用是对变量进行加一和减一的操作他们都是单目运算符只需要一个操作数他们的使用方法有两种前操作和后操作前操作 变量名; --变量名; 后操作 变量名; 变量名--;前操作的优先级非常高通常在一条语句中最先执行后操作的优先级非常低通常在一条语句中最后执行注意不要在一个表达式中多次使用自增和自减运算符容易造成歧义(2)关系和逻辑运算符关系和逻辑运算符的计算结果是一个布尔值(真or假)使用关系和逻辑运算符就可以构成逻辑表达式。关系运算符的优先级低于算数运算符双目的关系运算符包括 !表达式成立结果就为1不成立结果就为0逻辑运算符可以构成复杂的逻辑表达式逻辑运算符的优先级比关系运算符要低逻辑运算符包括 !(取反) (与) ||(或)!是一个单目的逻辑运算符作用是将一个布尔值(逻辑表达式)取反与()和或(||)属于双目运算符他们的作用就是构造复杂的逻辑表达式与和或的运算规则逻辑与,逻辑或运算规则记忆口诀与运算----全1为1其他为0 或运算----全0为0其他为1短路特性与运算和或运算具有短路的特性如果前一个表达式的已经可以决定整个表达式的结果此时不会去计算后一个表达式。(3)位运算符位运算就是对操作数进行对应的位之间的运算以下运算都属于位运算 ----------- 按位与| ------------ 按位或^ ----------- 按位异或~ ----------- 按位取反(单目) --------- 按位左移 --------- 按位右移1)按位与 ---- 按位与将操作数对应的位进行与运算3 5 0011 0101 0001 1按位与可以将一个数字的某些二进制位清0任何数与上0结果为0任何数与上1结果不变 xxxx xxxx 1111 0111 xxxx 0xxx2)按位或 ---- |按位或将操作数对应的位进行或运算3 | 5 0011 | 0101 0111 7按位与可以将一个数字的某些二进制位置一任何数或上0结果不变任何数或上1结果位1 xxxx xxxx | 0000 1000 xxxx 1xxx3)按位异或 ----- ^按位异或就是对应位进行异或运算异或运算的运算方法是 相同为0不同为1异或运算规则3 ^ 5 0011^0101 0110 6按位异或可以将一个数字的某些二进制位取反任何一个数异或上1取反任何一个数异或上0不变 xxxx xxxx ^ 0000 1000 xxxx yxxx(y是x取反)口诀与0清0或1置1异或1取反4)按位取反 ------ ~作用是将某个数的二进制位全部取反~0xaf 0x50 1010 1111 ------- 0101 00005)按位左移 ------ 按位右移 --------- 移位操作将数字的所有二进制位当成一个整体水平左右移动移位运算符属于双目运算符左边是要移位的数据右边就是要移位的位数移位会导致移位数字的某些数位丢失也会空出一些位置移位的操作方法左移移出的高位丢弃空出的低位补0 ------- 逻辑左移无符号数据右移移出的低位丢弃空出的高位补0 -------- 逻辑右移有符号数据右移移出的低位丢弃空出的高位补符号位 ------- 算数右移移位操作演示如果移位操作中没有丢失有效数据(移出的位中没有1)左移n位就相当于将数字乘以2的n次方右移n位就相当于将数字除以2的n次方(4)使用位运算构造一个任意的二进制数有一个数字1111 1111需要将第3-4位清0 -------- 1110 0111unsigned char ch 255; //使用按位与对某些位清0 ch ~(0x33) 1110 0111 0xe7有一个数字0000 0000需要将第3-4位置1 -------- 0001 1000unsigned char ch 0; //使用按位与对某些位清0 ch | (0x33) 0001 1000 0x18有一个数字1111 0000需要将第3-4位取反 --------1110 1000unsigned char ch 240; //使用按位与对某些位清0 ch ^ (0x33) 1110 1000 0xe8思考使用位运算构造出一个0xaf的字符类型的值先清0后置1(4)复合赋值运算符大多数的双目运算符可以和赋值运算符组合形成新的复合赋值运算符 - * / % | ^ 当希望把运算结果保存到某个参与运算的操作数时可以使用复合赋值运算符a ab --------- a b a a a b复合赋值运算符的优先级和赋值运算符一样低。(5)地址相关运算符是取地址运算符(单目)可以根据变量名获取变量的地址int num; num -----变量的地址C语言中使用%p占位符打印地址*运算符(单目)可以根据地址获取该地址上的数据(6)逗号运算符逗号运算符作用用于合并两个表达式运算时取后一个表达式的结果逗号运算符的优先级低于赋值运算符应用场景: 1.连接表达式 2.声明多个同类型变量 3.for循环中作为分隔符(7)三目运算符三目(条件)运算符的作用是根据某个表达式的结果来选择执行的内容格式 表达式 ? 公式1 : 公式2如果表达式为真执行公式1否则执行公式2练习使用三目运算符将用户输入的大写字母变为小写字母输入的小写字母变成大写字母。2.类型转换(1)自动类型转换如果一个表达式中包含多种类型的数据C语言会将这些数据转换成同一种数据类型后再进行处理。这个转换过程由计算机自动完成所以叫自动类型转换(隐式类型转换)转换规则 1)如果不同数据类型所占空间不同就会把占用空间小的类型转换成占用空间大的类型 2)如果不同数据类型所占空间相同就把整数类型转换成浮点类型 3)如果不同数据类型所占空间相同就把有符号转换成无符号注意:在实际开发中不要使用自动类型转换保证一个表达式中的数据类型相同(2)强制类型转换可以在C语言中任意给数据指定类型这种方式就叫强制类型转换语法:(指定的类型)原数据强制类型转换几乎不受任何规则约束有可能造成数据丢失强制类型转换的实现是计算机临时生成一个新的数据并不会改变原有数据新数据的值来自于原数据类型由强转类型指定3.运算符的优先级和结合性优先级当在一个表达式中出现多个不同优先级的运算符时由优先级决定先运算还是后运算优先级高的先运算数字越小优先级越高。结合性当在一个表达式中出现了相同优先级的运算符就要按照结合性的顺序来进行运算结合性分为左结合(从左到右)和右结合(从右到左)num num_1 num_2 ------从左到右 num num_1 num_2 ------从右到左运算符优先级和结合性表格运算符优先级和结合性表格(一)运算符优先级和结合性表格(二)4.C语言表达式的求值顺序int num 1;int num_1 num num;(1)顺序点C语言所有的运算都在表达式中完成表达式本身完成以下两个内容 1)得到一个运算结果 2)产生副作用所谓副作用就是会对表达式中的变量的值进行修改 -- .....i -------运算结果是i的值副作用是将i1 i -------运算结果是i1,副作用是将i1顺序点表示的是副作用必须产生效果的最后时间副作用产生效果一定在顺序点之前。..... i.... 顺序点 .....以num num为例讨论顺序点对表达式求值的影响如果在运算加法的时候副作用已经生效那么表达式的运算结果为 2*num1 如果在运算加法的时候副作用尚未生效那么表达式的运算结果为 2*num(2)C语言中规定的顺序点的位置 1)完整表达式结束 表达式语句结束 return语句 分支(if switch)和循环(for while)条件中 2)函数调用语句中在是实参赋值完成和函数第一条语句执行之前 3)运算符 || 逗号和? :的一个操作数获取之后num num在C语言中的运算结果是多少,答案是不确定(3)C语言为什么不规定更多的顺序点来保证表达式确定的执行顺序C/C不规定很多的顺序点求值顺序可能不确定Java严格规定了求值顺序(从左到右)。C/C这种做法是有意的在编译器设计和优化的时候就可以根据实际需求去调整求值顺序得到更高执行效率的代码。java规定了确定的求值顺序在丧失了一定的效率获得了更加清晰地程序行为。一门编程语言是否规定求值顺序是由其各自设计原则来决定的。结论:在C/C中任何依赖于特定执行顺序依赖顺序点之间实现副作用的表达式其结果将得不到保证。配套视频深度解析C语言