(void)(&x==&y)
来源:互联网 发布:哥特王朝4优化补丁 编辑:程序博客网 时间:2024/05/10 17:23
#define max(x,y) ({ \
typeof(x) _x = (x); \
typeof(y) _y = (y); \
(void) (&_x == &_y); \
_x > _y ? _x : _y; })
typeof(x)的意思是取x的类型,这不是标准C里的,gcc支持,vc不支持
(void) (&_x == &_y);这句话本身从执行程序来讲完全是一句废话,它的作用在于,本身我们无法做这样的操作typeof(_x)==typeof(_y),所以故意判断他们2个的地址指针是否相等,显然是不可能相等,但是如果_x和_y的类型不一样,其指针类型也会不一样,2个不一样的指针类型进行比较操作,会抛出一个编译警告。也就是说char *p; int *q; 然后p==q;,这个判断因为一个是char*一个是int*,会在编译时产生一个warning。巧妙就巧妙在这里。通过void显式丢弃一个表达式的值,否则有些编译器会就此给出警告信息。
1 0
- (void)(&x==&y)
- (void)(&x==&y)
- (void)(&x == &y)妙用
- 解方程: x+y=x|y
- y=mysqrt(x)
- x=min(x, y)
- train_test_split(X, y, stratify=y)
- x+=y与x=x+y的区别
- x+=y与x=x+y的区别
- 计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值
- SDUT 1447 水题(y*y = x*x + n)
- z = 16*x + y
- 圆,y=x²
- 算法:计算Y = X
- 复合赋值 x-=y、x/=y、x<<=y等问题
- 数学方法,证明:(x&y)+((x^y)>>1)=(x+y)/2
- bzoj 4152 the camptin (dis[x][y]=min(|x.x-y.x|,|x.y-y.y|),求1,n最短路)
- 算法分析:x+y=x|y,求k小y
- cocos2d-x 3.0 事件处理
- linux驱动程序基本步骤
- xml的常用方法
- 10个有关String的面试问题
- eclipse打开文件目录
- (void)(&x==&y)
- 2014 05 19 工作中的感悟
- C#猜拳小游戏
- 改善其网络衡量和分析服务
- 基础树状数组
- uva 11307 - Alternative Arborescence (树形dp)
- 翻译
- 数据库设计的基本原则
- 如何将 WordPress 博客安全防护做到极致?