当前位置: 首页 > 科技观察

C语言零基础教程的运算符和表达式,全面解析,简单易用

时间:2023-03-11 23:47:35 科技观察

运算符和表达式运算符:运算符用于执行程序代码运算,会对多个操作数进行运算。例如:2+3,它的操作数是2和3,运算符是“+”操作数:是运算符作用的实体,操作数表示被运算符所需要的数据来源操作说明。表达式:是数字、运算符、数字分组符号(括号)、自由变量等的组合,通过有意义的排列方法得到,可以获得数值。表达式书写规则1、运算符不能相邻。例a+-b错2,乘号不能省略。列x乘以y应写为x*y而不是xy3。可以使用多层括号来表示操作顺序。括号必须成对出现,括号应该用于两者。运算符优先级和结合性所谓优先级就是当一个表达式中有多个运算符时,先计算谁,谁后计算。其实我们在小学学算术的时候就学过这个。比如1+4÷2,什么是“结合律”?优先级是指不同优先级的算子参与运算时先计算谁,后计算谁。但是如果运算符的优先级相同,应该先计算谁呢?这是由“结合性”决定的。比如1+2×3÷4,乘法和除法的优先级是一样的,但是计算是从左到右的,即先计算乘法再计算除法,所以乘法的组合并且划分是从左到右。就这么简单!运算符按其所需的操作数分类:一元运算符二元运算符三元运算符按其作用分类:算术运算符一元符号和负数不改变操作数的值。intnum=10;-num;//表达式的值为-10num或10整数除法会向下舍入。5/2==25/2.0==2.5模运算仅适用于整数。5%2==15.2%2//语法错误赋值运算符将一个数据(常量或表达式)赋值给一个变量。intage=18;age+=2;//age=age+2;age+=5-3;//age=age+(5-3);关系运算符关系表达式只有2个值,为真(true)返回1,假(false)返回0。所谓关系计算就是做比较。在日常生活中,我们经常会遇到一些真假判断,比如“张三比李四高”、“济南离北京比济南离上海近”、“5大于2”的答案是真还是假错误的。编程是对实际解决问题过程的模拟,往往需要判断,比如“如果是这样,我就执行动作A,如果是,我就执行动作B”,那么如何判断这个那个需要关系运算符和关系表达式。逻辑运算符逻辑表达式只有2个值,真(真)返回1,假(假)返回0。一般用于连接关系表达式。短路现象在&&和||组成的逻辑表达式中运算符,C语言有一个“节省计算”的原则。当可以计算出一个子表达式的值来确定整个逻辑表达式的值时,后面的子表达式就不需要再求值了,这种表达式也称为短路表达式。例如:false&&printf("1\n");true&&printf("2\n");false||printf("3\n");true||printf("4\n");//输出:2//3对于&&符号,如果左边的表达式为假,则右边的表达式不执行,即printf("1")不执行;如果左边的表达式为真,就会执行右边的表达式,即会执行printf("2"),输出2为||symbol,如果左边为真,则右边表达式不执行,即printf("4")不执行,如果左边表达式为假,则右边表达式执行,即printf("3")将被执行,并且3将被输出。特殊运算符特殊算术运算符对变量执行+1和-1运算。它只能用于变量,不能用于常量和表达式。用介词时先用,用后置时先用后运算。注意:不要使用inta=1;printf("%d",(a+++++a));//1+3逗号运算符用逗号连接多个表达式,也称为“顺序求值运算符”。整个表达式的值是最后一个逗号后的表达式的值。逗号表达式有两个作用:分词:inta,b,c,d;求值:inta=(1,3,5,7,9);intb=1,3,5,7,9;conditionExpression条件表达式可以判断指定的条件,true和false分别执行不同的代码。健康)状况?表达式一:表达式二printf(5>0?"正数":"负数");printf((5>0)?("正数"):("负数"));//为了避免Dazzling,可以给每个表达式加上括号。按位运算符只针对整型和字符类型,直接对二进制进行运算。按位与符号实际上与逻辑与运算&&的含义相同,只是作用于每一位。0then0:如果每个位的两个数字都为真,则为真,否则为假。3->0b000000112->0b000000103&2->0b00000010Bitwiseor|同理,同逻辑或操作||的意思,只是作用于每一位。先有1再有1:对于每一位,如果有一个为真,则为真,否则为假。3->0b000000112->0b000000103|2->0b00000011按位异或^相同为0,不同为1:对于每一位,只要相同则为0,不同则为1.3->0b000000112->0b000000103^2->0b00000001位取反取反是一元运算符,对每一位取反,即0变成1,1变成06->0b00000110~6->0b11111001//补码:最高位变为符号位,所以结果一定是负数0b10000110//反码0b10000111//原码结果:-7左移左移操作就是把这些0和1全部左移n位,把右边缺的补上0。3->0b000000113<<1->0b00000110==62->0b000000102<<20b00001000==8咦,大家发现没有了,左移了1位,这个数相当于乘以2。但这只有在左溢出的高位不包含1的情况下才有效。如果丢了1次,那一定不是2次。右移右移操作就是将n位整体右移,补上左边缺失的符号位。3->0b000000113>>1->0b00000001==12->0b000000102<<20b00000001==1同理,正数右移运算的效果是将这个数除以2。最后,介绍到此结束C语言运算符和表达式。可以先练习一下,后面再介绍复杂的例子。