c语言基础——运算符表达式
来源:互联网 发布:o2o创业项目 php 编辑:程序博客网 时间:2024/05/18 05:22
运算符与表达式
1.优先级与结合性:
优先级决定了各个运算符程序语句的表达式中执行的顺序。当优先级相同时,计算机就开始靠运算符的结合性来决定计算顺序。当运算符为向右结合,那么就先选取最左端的运算符然后将其同该运算符的操作数用()括起来来理解;同理,当运算符为向左结合,那么就选取最右端的运算符将其同该运算符的操作数用()括起来来理解。
2.数据类型转换
1)强制转换
也称强制类型转换,直接将某数据强制转换成指定的数据类型
例:
int a;float b = 7.8;a = (int)b;这时b 的小数部分就会被截断,得到a = 7;将b当整数使用不会改变b 的值,也称为显式转换
2)隐式转换
数据参加运算前要进行下列转换:
char,short→int,float→double
混合运算时数据类型由低级→高级
int unsigned long double
例:
int a = 1;char b = 'A';double c = 2.0;a + b +c = 68.000000char型先转化为int类型,最后再转化到最高级double,所以最后得到的是一个double型的数。
3.运算符与表达式
1)赋值运算符
赋值符号:=
将赋值符右边表达式的值赋给赋值符左边的一个变量。
复合的赋值运算符:(共十个)
+= , -= , *= , /= , %= ,
<<= , >>= , &= , ^= , |=
例: a += 3 等价于 a=a+3
x *= y+8 等价于 x=x*(y+8)
x %= 3 等价于 x=x%3
由赋值运算符将一个变量和一个表达式连接起来的式子。
格式为:<变量> <赋值运算符> <表达式>
赋值运算符结合率为:“自右而左”。
例:a=b=c=5 a=(b=(c=5)) a,b,c值都是5
2)关系运算符
关系运算符用于两个数值之间的比较运算。
关系运算符的结合率为:“自左而右”。
由关系运算符和操作数组成的表达式称为关系表达式。
关系表达式的值是一个逻辑型的值,即只有两个值(真和假)。
C语言是用1作为真,用0作为假。但是进行运算时,非0即认为真,0才认为假。而表达式的结果为真时,给出真值1。为假时,给出假值0。
例:int x=5;
int y=3;
int z=1;
x>y 结果为1
z>y 结果为0;
3)逻辑运算符
与:&&
或:||
非:!
例:4 && 0 || 2 的值为1
5 && !0 的值为1
4)条件运算符
条件运算符: ? : 它是一个三目运算符。
条件表达式的一般格式为:
表达式1 ? 表达式2 : 表达式3
运算过程:表达式1的结果为真(非0)时,表达式2的计算结果作为条件表达式的值;否则,取表达式3的计算结果为条件表达式的值。
例:a>b?a:b
a>b 时执行a
反之b
5)自增自减运算符
i++,++i
i--,--i
i++,i-- 后自增/减
++i,--i 先自增/减
例:
int i=1;a = i++;b = ++i;此时a=1,b=2,i=2
结合律:自右向左;
i+++j <=> (i++)+j //c语言贪婪法则,编译器从左向右扫描运算符,尽可能多的组合运算符
对于sizeof这个关键字来讲,在编译时会将它内部的表达式改为最终类型,而不是表达式本身
例:
int i = 10;printf("%d%d",sizeof(i++),i);此时输出i为依然为10;
sizeof(i++) i++最终=》sizeof(int) 没有(i++)操作
所以sizeof内部不要有赋值操作
- c语言基础——运算符表达式
- C语言基础-----运算符与表达式
- C语言基础 运算符和表达式
- c语言基础(5)--运算符,表达式和语句
- C语言基础:运算符、表达式和语句
- C语言基础学习(二)--运算符表达式
- C语言——逗号运算符和逗号表达式
- C语言——数据类型,运算符,表达式
- C语言学习——运算符与表达式
- C语言运算符表达式
- C语言-运算符、表达式
- C语言运算符、表达式
- C语言基础——基本运算
- C语言基础—基本运算
- c语言基础5—算数运算
- C语言基础—基本运算
- C#——语言基础——运算符
- C语言基础——基本运算符
- [LeetCode] 35. Search Insert Position
- 前自增的学习和自我探讨
- 授权MySQL数据库远程连接的权限
- python写算法题:leetcode: 30. Substring with Concatenation of All Words
- 图论——calling circls
- c语言基础——运算符表达式
- 【转】SPSS与EXCEL的比较
- 在windows上面建立端口传文件
- ReactNative获取ListView当前界面展示的row的个数
- Android 如何对apk文件进行反编译以及重新打包签名 标签: apktoolandroid反编译jebSmali2Java 2016-05-10 16:00 3897人阅读 评论(0) 收藏
- jzoj. 3873. 【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)
- 堆与堆排序
- 《Linux内核设计与实现》读书笔记(九)- 内核同步介绍
- JSP与JavaBean