c语言学习笔记(9)优先级及类型转换分析
2015-09-28 22:37
555 查看
摘要:总结了c语言优先级易错的部分,隐式转换类型的规则,分析了一个实例。
一、c语言易错优先级总结
如下表:
在我看来,除了理解以外,更多的是记忆,然后做的多了,也就记住了。
二、C语言隐式类型转换规则
1.算术运算中,低类型转换为高类型,类型高低如下:
2.赋值表达式中,表达式的值转换为左边变量的类型。
3.函数调用时,实参转换为形参的类型。
4.函数返回时,return表达式转换为返回值类型。
下面通过一个实例解释上面的四个规则:
这篇帖子就总结到这里吧,如有不正确的地方还请指出,大家共同进步!
一、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>
这篇帖子就总结到这里吧,如有不正确的地方还请指出,大家共同进步!
相关文章推荐
- 就拿C++指针传递、引用传递开博吧
- 系统学习ARM之五 --C语言和汇编混合编写
- C语言项目总结-通讯录
- C++按格式接收输入字符(京东,滴滴,360笔试必用)
- C语言第八节-文件操作
- C++按格式接收输入字符(京东,滴滴,360笔试必用)
- c++设计模式----状态模式state
- C语言第七节-结构体-枚举-typedef
- C语言第六节-指针
- C语言第五节-原码-数组-字符串
- C语言第四节-函数
- C语言第三节-顺序,分支,循环
- 单向链表基本操作(C语言实现)
- 浅析插入排序
- c语言指针的之交换两个数的值
- scala调用c/c++代码
- 构造和析构函数对比
- c++中关于while(true)的运用和switch,case的应用
- C++之C语言增强
- C语言-文件操作函数(部分)