一、描述
学了这么多年C语言,你真的会用小括号吗?我们今天来总结一下小括号“()”有哪些用法,用法如下表:
操作符 | 描述 | 用法示例 | 表达式结果 |
() | 聚组 | (表达式) | 与表达式相同 |
() | 函数调用 | Fun(参数表) | 函数返回值 |
() | 类型转换 | (类型)右值 | 类型转换后的右值 |
() | 复合语句表达式 | ({语句;语句}) | 复合语句最后一个语句值 |
二、示例
1、聚组是用来改变运算优先级,实例如下:
例子1: data = (x y)*5 ;
例子2: int (*pointer)[3] ;
例2中为声明一个指针数组。
2、函数调用是用来调用函数,实例如下:
例子1: func(a , b);
例子2: (*func_p)(c , d);
3、类型转换是用强制类型转换,实例如下:
例子1: float a = 3.14;
int b = (int)a;
4、复合语句表达式是将复合语句通过小括号括起来后,可以当做表达式,通常在GUN C中使用,实例如下:
例子1: data = ( {int i,j; i = 2 ; j = i*2 1; } );
例1中data 值为5;
例子2:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
例2中为container_of是linux内核数据结构中经常用到的宏,它可以根据结构体的成员变量获取所在结构体的首地址。
作者:liwei
Github:liyinuoman2017