14-priority_typeconversion
来源:互联网 发布:opt算法c语言代码 编辑:程序博客网 时间:2024/05/17 22:21
#include <stdio.h>
#include <malloc.h>
typedef struct _demo {
int* pInt;
float f;
} Demo;
int func(int v, int m) {
/* return (v & m != 0); //v & (m != 0) */
return ((v & m) != 0);
}
int main() {
Demo* pD = (Demo*)malloc(sizeof(Demo));
int *p[5]; //int* p[5]
int *f(); //int* f();
int i = 0;
/* i = 1, 2; //i == 1 */
i = (1, 2);
/* *pD.f = 0; // *(pD.f) */
(*pD).f = 0;
free(pD);
return 0;
}
易错的优先级
*p.num;
.的优先级高于*,->操作符作用于消除这个问题
实际上是对p取f偏移,作为指针,然后进行取成员操作 <=> *(p.num)
int *ap[];
[]的优先级高于*
实际上ap是个元素为int*指针的数组 <=> int *(ap[])
int *fp();
函数()高于*
fp是个函数,返回int* <=> int*(fp())
(val & mask != 0)
==和!=高于位操作
<=> val & (mask != 0)
c = getchar() != EOF;
==和!=高于赋值操作
<=> (getchar() != EOF)
msb << 4 + lsb
算术运算符高于位移运算符
<=> msb << (4 + lsb)
i = 1, 2;
逗号运算符在所有运算符中优先级最低
<=> (i = 1), 2;
C语言隐式类型转换
算术运算表达式中,低类型转换为高类型;
赋值表达式中,表达式的值转换为左边变量的类型;
函数调用时,实参转换为形参的类型;
函数返回值,return表达式转换为返回值类型;
char ->
short -> int -> unsigned int -> long -> unsigned long -> double <- float
#include <stdio.h>
int main() {
int i = -2;
unsigned int j = 1;
if ( (i + j) >= 0 ) {
printf("i+j >= 0\n");
} else {
printf("i+j < 0\n");
}
printf("i+j=%0X\n", i + j); // FFFFFFFF
printf("i+j=%d\n", i + j); // -1
printf("i+j=%u\n", i + j); // 4294967295
// 有符号和无符号类型在内存中的表示都是一样的;
// 关键看我们的计算机如何解析;
return 0;
}
-2
+2: 00000000 00000000 00000000 00000010
-2: 11111111 11111111 11111111 11111101 + 1
-2: 11111111 11111111 11111111 11111110
-2: 0xFFFFFFFE
+1: 00000000 00000000 00000000 00000001
-2+1:
11111111 11111111 11111111 11111111
0xFFFFFFFF
-1
+1 00000000 00000000 00000000 00000001
-1: 11111111 11111111 11111111 11111110 + 1
-1: 11111111 11111111 11111111 11111111
-1: 0xFFFFFFFF
printf("%d", i + j);
%d: 以int类型打印i+j; 结果是0xFFFFFFFF,被解析为-1
%u: 把-2转为uint,0xFFFFFFFE很大的正数;
0 0
- 14-priority_typeconversion
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- 14
- Design Patterns - Visitor Pattern
- IOS 获得版本
- 第11周项目3—点类派生直线类
- WPF 绑定各种数据源之Datatable
- Android基于ffmpeg媒体库小视频录制功能
- 14-priority_typeconversion
- Android Studio设置logcat颜色
- 文章标题
- 15-compilation_process
- hdu 5226 Tom and matrix
- linux添加开机启动项、登陆启动项、定时启动项、关机执行项等的方法
- VMWare上安装完Ubuntu-12.04的后发现登陆黑屏
- Windows 驱动开发 - 4
- 16-macro