c语言学习笔记(9)优先级及类型转换分析
来源:互联网 发布:北京理光软件研究所 编辑:程序博客网 时间:2024/05/16 08:56
摘要:总结了c语言优先级易错的部分,隐式转换类型的规则,分析了一个实例。
一、c语言易错优先级总结
如下表:
优先级问题
表达式
实际结果
.的优先级高于*,因此c引入了->消除该问题
*p.f
对p取偏移f,作为指针,然后进行解除引用操作*(p.f)
[]高于*
int *ap[]
ap是一个元素为int类型指针的数组int *(ap[])
函数()高于*
int *fp()
fp是一个函数,返回
int *,int *(fp())
==和!=高于位操作
val&mask!=0
val&(mask!=0)
==和!=高于赋值运算
c=getchar!=EOF
c=(getchar()!=EOF)
算术运算符高于位移运算符
msb<<slab+4
msb<<(slab+4)
逗号运算符在所有运算符里面优先级最低
a=1,2
(a=1),2
在我看来,除了理解以外,更多的是记忆,然后做的多了,也就记住了。
二、C语言隐式类型转换规则
1.算术运算中,低类型转换为高类型,类型高低如下:
2.赋值表达式中,表达式的值转换为左边变量的类型。
3.函数调用时,实参转换为形参的类型。
4.函数返回时,return表达式转换为返回值类型。
下面通过一个实例解释上面的四个规则:
<span style="font-size:18px;">#include <stdio.h>int main(){ char c='c'; short d=0; short g=0; int i = -2; unsigned int j = 1; int add(int a,int b)// 实参转换为形参的类型 { return a+b;// return表达式转换为返回值类型 } g=add(c,d);// 表达式的值转换为左边变量的类型 printf("%d\n",sizeof(c)); printf("%d\n",sizeof(d)); printf("%d\n",sizeof(g)); printf("d+c size is:%d\n",sizeof(d+c));// 低类型转换为高类型 if( (i + j) >= 0 ) { printf("i+j>=0\n"); } else { printf("i+j<0\n"); } printf("i+j=%d\n", i + j); return 0;}</span>
这篇帖子就总结到这里吧,如有不正确的地方还请指出,大家共同进步!
0 0
- c语言学习笔记(9)优先级及类型转换分析
- C学习笔记(三) 数据类型分类及类型转换
- C语言学习笔记03赋值类型转换
- 黑马程序员--C语言里的类型转换学习笔记
- 优先级和类型转换分析
- 优先级和类型转换分析
- 优先级和类型转换分析
- C语言学习笔记 lesson5 浮点数类型及复习
- C语言学习笔记(4)类型转化,复合类型
- C语言(类型转换)
- 2.7、优先级和类型转换分析
- c语言学习笔记(1)基本数据类型及auto,register,static分析
- C/C++学习笔记28:类型转换
- C++primer学习笔记-----4.11类型转换
- C#学习之路,学习笔记 第三章 运算符和表达式(运算符、优先级、类型转换)
- 类型转换--c语言
- C语言类型转换
- C语言类型转换
- 配置linux中可能遇到的问题总结
- ios 小例子,汽车和轮胎,来自object-c基础教程。
- ATL窗口(2)(转)
- ZOJ 3231 Apple Transportation(上下界费用流)
- 浏览器常见HTTP错误代码
- c语言学习笔记(9)优先级及类型转换分析
- 随感 。 2015.09.28
- HTTP协议
- POJ - 3666 Making the Grade(DP)
- Codeforces 581C Developing Skills
- SpringMVC获取静态资源的问题
- Linux的capability深入分析
- 如何在十天内掌握线性代数
- Cocos studio 2.3.2 Python exec is not exist.