C++中的(unsigned int)&代表的意思

int  main()

{

using namespace std;

int i = 20;

int m = (unsigned int)&i; //注意这里的&符号

cout  << m << endl;

}

&:表示引用的意思,表示m是i的一个别名,相当于人的小名。

再看下面的例子:

#include <stdio.h>

#define FIND(struc,e)  (int)&(((struc *)0)->e)

typedef struct {
	int  a;
	char b[20];
	double ccc;
}stu;

int main()
{
	printf("%d\n",FIND(stu,b[0]));
	printf("%d\n",FIND(stu,ccc));

	return 0;
}

这里定义了一个宏FIND,求结构体struc里的某个变量相对于struc的偏移量。

其中(struc *)0表示将常量0强制转化为struc *型指针所指向的地址;

&(((struc &)0)->e)表示取结构体指针(struc *)0的成员e的地址。

输出结果为:4   24

C++中的(unsigned int)&代表的意思

时间: 2024-07-31 15:02:26

C++中的(unsigned int)&代表的意思的相关文章

error LNK2005: &quot;void * __cdecl operator new(unsigned int)&quot; ([email&#160;protected]@Z) 已经在 LIBCMTD.lib(new.obj) 中

在编译文章: 使用GetAdaptersAddresses函数获取物理MAC地址中的代码时,出现以下错误: 错误 1 error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 已经在 LIBCMTD.lib(new.obj) 中定义 F:\CcProjects\获取网卡物理地址MAC地址\获取网卡物理地址MAC地址\uafxcwd.lib(afxmem.obj) 获取网卡物理地址MA

c++ 中关于int,unsigned int , short的关系与应用

int类型比较特殊,具体的字节数同机器字长和编译器有关.如果要保证移植性,尽量用__int16 __int32 __int64吧 __int16.__int32这种数据类型在所有平台下都分配相同的字节.所以在移植上不存在问题. 所谓的不可移植是指:在一个平台上编写的代码无法拿到另一个平台上运行时,不能达到期望的运行结果. 例如:在32为平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节,那么在16位上编译出来的exe, 其中是

(转载)深入解析unsigned int 和 int

就如同int a:一样,int 也能被其它的修饰符修饰.除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char.int.Int是默认有符号的.2.unsigned-----无符号,修饰int .char3.long------长型,修饰int .double4.short------短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别.什么叫做有符号,什么叫做无符号这个问题其实很简单,比如

unsigned int与int相加问题

作者 : 卿笃军 一道unsigned int与int类型的相加题目,引发了我对这个问题的思考. 首先要明白两个问题: 问题一. unsigned int 和 int到底哪个能表达出来的数上限大呢? 答:当然是unsigned int. 为什么? 答:因为,int将最高位看做是符号位,0表示'正',1表示'负',也就是说,最高位不能用来存值. 问题二. 当计算机进行两数相加的时候会如何进行类型转换呢? 答:当然是将上限小的转化为上限大的咯.(就是将int类型转化为unsigned int类型).

[转]iOS NSInteger/NSUInteger与int/unsigned int、long/unsigned long之间的区别

在iOS开发中经常使用NSInteger和NSUInteger,而在其他的类似于C++的语言中,我们经常使用的是int.unsigned int.我们知道iOS也可以使用g++编译器,那么它们之间是否有什么联系呢? 从NSUInteger和NSInteger的定义文件中 NSObjCRuntime.h发现有这样的语句: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUI

解决warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘int *’

[[email protected] c]# gcc MemTest.c -o MemTest1 -WallMemTest.c: In function 'main':MemTest.c:24: warning: format '%x' expects type 'unsigned int', but argument 2 has type 'int *'MemTest.c:39: warning: format '%x' expects type 'unsigned int', but arg

unsigned int与int相加

int main() { int a = -6; unsigned int b = 4; if(a+b > 0) printf("a+b>0\n");//这句话被打印 else printf("a+b<0\n"); int z = a+b; if(z > 0) printf("z>0"); else printf("z<0");//这句话被打印 } 当int和unsigned in相加时,要

深度解析C语言int与unsigned int

就如同int a:一样,int 也能被其它的修饰符修饰.除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种:1.signed----有符号,可修饰char.int.Int是默认有符号的.2.unsigned-----无符号,修饰int .char3.long------长型,修饰int .double4.short------短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别.什么叫做有符号,什么叫做无符号这个问题其实很简单,比如

c语言中的数组名代表的意义

数组名是数组的首地址,就是数组中的第一个元素的地址,是常量.常量是不能值在=的左边的.数组和指针的区别在于,指针是变量,是用来存储指向数据的地址的变量,而数组名是常量.一般情况下申明一个数组,比如char  a[10]; 之后  数组名a都是数组的首地址,是一个地址常量.但是在函数申明的形参列表中除外,比如: int  fo(char []); 在这种情况下的申明与 int  fo(char a[]); int  fo(char *a); 是等价的,就是说在这种情况下,就算你写的是数组的形式,编