(void)(&x==&y)

#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显式丢弃一个表达式的值。否则有些编译器会就此给出警告信息。

时间: 2024-08-18 17:20:57

(void)(&x==&y)的相关文章

POJ 1061青蛙的约会。求解(x+mT)%L=(y+nT)%L的最小步数T。

因为是同余,所以就是(x+mT)%L-(y+nT)%L=0.可以写成(x-y+(m-n)T)%L=0.就是这个数是L的倍数啦.那么我可以这样x-y+(m-n)T + Ls = 0.就可以了,s可正可负,就能满足条件. #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #

第五周(x,y)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第五周(x,y) *作者:王忠 *完成日期:2015.4.7 *版本号:v1.0 * *问题描述:设计平面坐标点类,计算两点之间距离.到原点距离.关于坐标轴和原点的对称点等.在设计中,由于求距离.求对称点等操作对原对象不能造成任何改变,所以,将这些函数设计为常成员函数是合适的,能够避免数据成员被无意更改. *输入描述:按照要求输入x,y *程序输出:输出距离,关于x,y,o对称

[清华集训]小 Y 和恐怖的奴隶主

题面在这里 题意 有一个\(Boss\)和他血量为\(m\)的随从奴隶主,每当奴隶主受到攻击且不死,并且\(Boss\)的随从个数\(<k\)时,就会新召唤一个血量为\(m\)的奴隶主.每次攻击\(Boss\)和每个奴隶主的概率是相同的,求\(n\)步后期望对\(Boss\)造成的伤害. \(T\le1000,n\le10^{18},m\le3,k\le8\) sol --- 看到\(m<=3,k<=8\)的良心数据肯定是状压啦 通过暴搜可以得出状态最多只会有\(164\)种 并且两个状

C语言问卷调查

1.你对自己的未来有什么规划?做了哪些准备? 我准备在毕业之前学好专业.天天认真苦读 你认为什么是学习?学习有什么用?现在学习动力如何?为什么? 就是学好该学的东西.学习可以为我们以后大学找到更好的工作.一般般,感觉太难了 你感觉自己什么事情做的比较成功?有什么经验? 我觉得自己做人比较成功,多听多学多做  尊重他人 你怎么看待软件工程这个专业?学习这个专业你对自己有什么期望? 现在社会的发展越来越网络化信息化课  我们软件专业的前景也是越来越被看好和期待.   争取学好专业语言,有能力的话多学

几道树剖模板题

寒假后半段一直都在外出旅游..颓了好久..qaq 旅游期间写了几道树剖模板题,贴上来.. BZOJ 1036 没啥好说的,裸题 1 #include <cstdio> 2 #include <algorithm> 3 4 #define LEFT (segt[cur].l) 5 #define RIGHT (segt[cur].r) 6 #define MID (segt[cur].mid) 7 #define SUM (segt[cur].Sum) 8 #define MAX (

java学习之坦克大战游戏

总结:由于这几天快过年比较忙然后没怎么写,写代码途中一些经验总结现在给忘记了.这次的小项目感觉比上次写的思路清楚了点.没有之前第一次写那么逻辑混乱,结构也搞的比之前的要好,添加功能比较容易.学习了之前的经验,操作对象的方法由对象本身提供.不过这次小项目还有不足和不完善之处,有些可以做的功能没有实现,比如游戏存档,这里应该可以用下对象的序列化,还有游戏难度的设置也可以写个文件弄出来.要过年了,到处走亲戚没什么心思写了,这里只能留个尾巴了. 前言:之前的及时通信项目完成后感觉线程方面和对java的运

C指针与内存

C指针与内存 指针是C / C++ 中重要的构造类型,指针赋予了C / C++程序直接访问和修改内存的能力.C / C++的许多重要应用,如编译.OS.嵌入式开发都依赖于这种能力. 冯诺依曼体系的计算机内存存储指令和数据,我们可以将其抽象为指令区和数据区(当然实际情况要复杂得多).数据区中包含栈(stack)和堆(heap)区,栈区的数据由编译器管理而堆区数据则由程序员管理. 由于指令同样存在于内存中,那么函数在内存中也会拥有地址(指针). 函数指针相对于函数名来说 可以在运行期动态地选择调用的

Java版贪吃蛇(比较完善的版本)

很认真的写的一个java版的贪吃蛇游戏,图形界面,支持菜单操作,键盘监听,可加速,减速,统计得分,设定运动速度,设定游戏背景颜色等!应该没有Bug了,因为全被我修改没了.哈哈. 下面是项目各包及类的层次关系: 游戏的主要运行界面截图如下: 下面是部分代码,详细源码见此链接:http://pan.baidu.com/s/1bnubnzh //Snake类: package com.huowolf.entities; import java.awt.Color; import java.awt.Gr

CUDA, 软件抽象的幻影背后 之三

本文原载于我的主页:planckscale.info,转载于此. 版权声明:原创作品,欢迎转载,但转载请以超链接形式注明文章来源(planckscale.info).作者信息和本声明,否则将追究法律责任. 上一篇中谈到了编程模型中的Block等概念如何映射到硬件上执行,以及CUDA如何用并行来掩盖延迟.这一篇继续剖析SIMT,谈一谈控制流分叉,指令吞吐和线程间通讯机制. 虽然我们说warp中的线程类似于SIMD,但事实上它是真正的线程.warp中的每一个thread都有自己的指令地址寄存器,允许