C语言学习篇-4运算符及其优先级
2016-05-31 21:47
337 查看
说明:C语言一共有34种运算符。
注意:
1.int a=10.8;//数据精度丢失警告。结果为10——自动类型转换
2.int a=(int)10.8;//无警告。把10.8强制转换为整型——强制类型转换
3.double c=10.6+6//结果为16.600000。在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。即把6转为6.000000后再参与运算。
4.参与运算的两个数是什么类型,那么其结果就是什么类型。int a=10/3结果为3,double b=10/3结果为3.000000;double c=10.0/3结果为3.333333。要求精确值可以进行强制类型转换。double d=(double)3/2把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。也可以写成3/(double)2。这种情况需要注意与对整体进行强制转换的区别 double e=(double)(3/2)是先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。
int a=10+5;a=b=10;//从右向左,左边不能为常量
复合赋值
a=a+5;=>a+=5;
a=a*5;=>a*=5;
a+=5*6+4;=>a=a+(5*6+4)
提示:预算顺序取决于两点:一是运算符的优先级,二是结合的顺序。
把a的值加1有四种方法:
a=a+1;
a+=1;
a++;
++a;
简单区分a++和++a。
int b;
int a=10;
b=++a; //a==11,b==11;a先把值加1为11,再赋值给b
b=a++; //a==11,b==10;a先把值10复制给b,a自己再加1为11
b=(a++)+(++a); //a1==10,a2==12,b==22
b=(++a)+(a++); //a1==11,a2==11,b==22
注意:int d=10++;//这种写法是错误的,因为对常量进行自加和自减没有任何意义。
2.基本形式:sizeof(变量名|常量|数据类型),完成之后返回一个值。
注意:数据类型一定要用括号括起来,不能写成sizeof 数据类型 这样的形式。
默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,如登录操作,这种情况可以使用条件语句来完成。
2)真假
在C语言中,条件成立称为“真”,条件不成立称为“假”。
C语言规定,任何数值都有真假性,任何非零值都为真,只有0才为假,无布尔类型。
3)关系比较
关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。有6种运算符,分别是:(1)< (2)<= (3) > (4) >= (5)== (6)!=
4)使用注意
①. ==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。如2==3>1 应该先计算3>1
②. 关系运算符中,若优先级相同,则“从左往右”结合。如4>3<2,先计算4>3
③. 关系运算符中的优先级小于算术运算符。如3+4>8-2 相当于(3+4)> (8-2)
④. 练习5!=4+2*7>3==10 先计算5!=18>3==10,5!=1==10,1==10,假
![这里写图片描述](https://img-blog.csdn.net/20160531210132195)
注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。
双目:需要两个值参与运算
三目:需要3个数值参与
三目运算符格式:条件?数值1:数值2
先判断?前的条件,若条件成立则返回数值1,若条件不成立则返回条件2。
示例:要求比较a和b的值,把数值大的存入到c中 c=a>b?a:b
注意:后缀运算优先级高于前缀。因此++i++应解释为++(i++)。而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
运算符
算术运算
名称 | 运算符 | 说明 |
---|---|---|
加法 | + | 还可以表示正号 |
减法 | - | 还可以表示负号 |
乘法 | * | 非数学意义上的X |
除法 | / | 注意1/2的值为0而非0.5 |
取余(模运算) | % | 两个整数相除之后的余数(注意两边都必须是整数,带符号只和左值有关) |
1.int a=10.8;//数据精度丢失警告。结果为10——自动类型转换
2.int a=(int)10.8;//无警告。把10.8强制转换为整型——强制类型转换
3.double c=10.6+6//结果为16.600000。在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。即把6转为6.000000后再参与运算。
4.参与运算的两个数是什么类型,那么其结果就是什么类型。int a=10/3结果为3,double b=10/3结果为3.000000;double c=10.0/3结果为3.333333。要求精确值可以进行强制类型转换。double d=(double)3/2把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。也可以写成3/(double)2。这种情况需要注意与对整体进行强制转换的区别 double e=(double)(3/2)是先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。
赋值运算
简单赋值int a=10+5;a=b=10;//从右向左,左边不能为常量
复合赋值
a=a+5;=>a+=5;
a=a*5;=>a*=5;
a+=5*6+4;=>a=a+(5*6+4)
提示:预算顺序取决于两点:一是运算符的优先级,二是结合的顺序。
自增自减运算
int a=10;把a的值加1有四种方法:
a=a+1;
a+=1;
a++;
++a;
简单区分a++和++a。
int b;
int a=10;
b=++a; //a==11,b==11;a先把值加1为11,再赋值给b
b=a++; //a==11,b==10;a先把值10复制给b,a自己再加1为11
b=(a++)+(++a); //a1==10,a2==12,b==22
b=(++a)+(a++); //a1==11,a2==11,b==22
注意:int d=10++;//这种写法是错误的,因为对常量进行自加和自减没有任何意义。
Sizeof
1.作用:用来计算变量,常量或者是一种数据类型所占的内存字节数。2.基本形式:sizeof(变量名|常量|数据类型),完成之后返回一个值。
注意:数据类型一定要用括号括起来,不能写成sizeof 数据类型 这样的形式。
关系运算符
1)条件判断默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,如登录操作,这种情况可以使用条件语句来完成。
2)真假
在C语言中,条件成立称为“真”,条件不成立称为“假”。
C语言规定,任何数值都有真假性,任何非零值都为真,只有0才为假,无布尔类型。
3)关系比较
关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。有6种运算符,分别是:(1)< (2)<= (3) > (4) >= (5)== (6)!=
4)使用注意
①. ==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。如2==3>1 应该先计算3>1
②. 关系运算符中,若优先级相同,则“从左往右”结合。如4>3<2,先计算4>3
③. 关系运算符中的优先级小于算术运算符。如3+4>8-2 相当于(3+4)> (8-2)
④. 练习5!=4+2*7>3==10 先计算5!=18>3==10,5!=1==10,1==10,假
逻辑运算符
逻辑运算的结果只有两个:真(0)和假(1)![这里写图片描述](https://img-blog.csdn.net/20160531210132195)
注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。
三目运算符
单目:1个数值参与运算 如!5双目:需要两个值参与运算
三目:需要3个数值参与
三目运算符格式:条件?数值1:数值2
先判断?前的条件,若条件成立则返回数值1,若条件不成立则返回条件2。
示例:要求比较a和b的值,把数值大的存入到c中 c=a>b?a:b
运算符优先级
C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。在C语言标准中,没有结合性的说法。相同优先级运算符,从左至右依次运算。注意:后缀运算优先级高于前缀。因此++i++应解释为++(i++)。而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
总结
1.运算符优先级决定着程序运行的先后顺序,最好能够将其记住。相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- Lua中关系运算符的使用教程
- Lua学习笔记之运算符和表达式
- C#运算符重载用法实例分析
- sql server 2008中的apply运算符使用方法
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C#中38个常用运算符的优先级的划分和理解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- linux----->shell高级编程----1