`
蒙面考拉
  • 浏览: 160577 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

不用sizeof判断16位32位

 
阅读更多

方法一:

16位的系统下,

int i = 65536;

cout << i; // 输出0;//装不下,最高位溢出,剩下16位的当然是0;

int i = 65535;

cout << i; // 输出-1;//-1的补码是65535

而32位的系统下:

int i = 65536;

cout << i; // 输出65536;

int i = 65535;

cout << i; // 输出65535;

2.

 

#include <iostream>

 

using namespace std;

 

#define my_sizeof(L_Value)  (char* )(&L_Value + 1) - (char* )&L_Value

 

int main()

 

{

    int i;

    double f;

    double a[4];

    double* q;

    cout<<my_sizeof(i)<<endl;//4

    cout<<my_sizeof(f)<<endl;//8

    cout<<my_sizeof(a)<<endl;//32

    cout<<my_sizeof(q)<<endl;//4

    cout<<my_sizeof("aadf")<<endl;//5

    system("pause");

    return 0;

}

 


(char* )&L_Value返回L_Value的地址的第一个字节,(char* )(&L_Value+1)返回L_Value的地址的下一个地址的第一个字节,所以他们之差为它所占字节数。

分享到:
评论

相关推荐

    不使用sizeof 判断一个数据所占的内存大小

    然而,指针类型因为需要存储地址信息,其大小通常是固定的,在64位系统中通常占用8个字节,在32位系统中占用4个字节。 现在,笔试题目提出了一个挑战,即不使用sizeof来判断一个数据类型所占内存大小的方法。这种...

    sizeof进行结构体大小的判断.

    sizeof进行结构体大小的判断.sizeof进行结构体大小的判断.sizeof进行结构体大小的判断.

    精简版的delphi 判断 32/ 64位系统的代码

    在Delphi编程环境中,开发人员有时需要根据运行时的操作系统类型来编写特定的代码,比如判断当前系统是32位还是64位。这在处理系统资源、注册表路径或者调用不同版本的API时非常关键。下面我们将详细介绍如何使用...

    delphi 判断 exe 是否是 x64位可执行文件

    此外,如果你的应用需要频繁进行这种检查,可以考虑使用Windows API函数`IsWow64Process`,但这个函数只能用于判断当前正在运行的进程是否是32位在64位系统下的WoW64子系统下运行。对于检查其他外部文件,仍需使用PE...

    sizeof 数据结构 C++/C 面试题

    例如,`sizeof(int)`通常返回4(字节),假设你的系统中int是32位的。 对于数组,`sizeof`返回整个数组所占的字节数,而不是单个元素的大小。例如,`sizeof(int[5])`将返回20,因为有5个int元素,每个4字节。这里要...

    delphi获得WINDOWS版本信息及32位或64位

    在Delphi编程中,获取Windows操作系统版本信息以及判断系统是32位还是64位是一项常见的任务。这对于软件兼容性和功能实现至关重要。本教程将详细解释如何使用Delphi的内置函数和组件来实现这一目标。 首先,我们...

    delphi 检测系统是xp,vista,win7还是32位,64位

    "delphi 检测系统是xp,vista,win7还是32位,64位"这个标题正是指向了这样的需求。下面将详细解释如何在Delphi中实现这一功能。 首先,我们需要了解Delphi中获取操作系统信息的基本方法。这通常涉及到Windows API...

    c语言中获取整数和浮点数的符号位

    符号位是指数值的正负符号,判断符号位是进行逻辑处理的基础。下面是获取整数和浮点数符号位的相关知识点。 首先,为什么要获取符号位?在许多情况下,我们需要判断数值的正负,以进行相应的逻辑处理。例如,if (x ...

    C++ const sizeof

    - `sizeof(ss1)`:返回指针大小,如32位系统中为4字节。 - `sizeof(ss2)`:返回字符串数组的实际大小,包括字符串自身和末尾的空字符。 - `sizeof(ss3)`:返回分配的数组大小,即使只初始化了一部分。 - `sizeof...

    internet16位校验和

    ### Internet 16位校验和的理解与实现 在计算机网络通信中,数据包的完整性和准确性至关重要。为了确保在网络传输过程中数据不被损坏或篡改,通常会采用各种校验技术来验证数据的完整性。其中,16位校验和...

    富士通笔试题与解答 经典

    - `sizeof(p1)`和`sizeof(p2)`都是`4`,因为在32位系统下,指针的大小通常是4个字节。`p1`是一个字符指针,`p2`是一个`void`指针,它们都存储内存地址。 - `sizeof(n)`是`4`,因为`int`类型在32位系统下通常占用4...

    visual studio 2010 开发64位程序

    例如,有时我们需要判断程序本身是32位还是64位,或者操作系统是32位还是64位。对于程序位数的判断,可以通过预处理符号在编译时进行检查,但这可能会导致代码冗余,特别是当需要获取位数字符串时。此时,可以使用...

    CC++语言中判断数据类型长度符

    ### CC++语言中判断数据类型长度符 #### 一、概述 在C/C++语言中,`sizeof`是一个非常重要的关键字,它用于获取一个对象或类型所占用的内存空间大小。这一特性对于深入理解内存管理和数据类型至关重要。下面将详细...

    VC下判断系统版本代码

    ### VC下判断系统版本代码详解 在开发针对多个Windows操作系统的应用程序时,了解目标系统版本是非常重要的。这有助于开发者根据不同的系统版本调整程序的行为或功能,确保应用在各种环境中都能正常运行。本文将...

    位运算应用口诀,你知道掌握了多少?

    位运算是一种基础的计算机操作,用于对二进制数进行操作。它可以用于判断奇偶数、取某数中指定位、清零取反、交换两个变量的值等多种场景。 1. 位运算符的应用 (1) 按位与 (&):用于清零特定位,取某数中指定位。 ...

    判断有符号和无符号的变量或类型[C/C++]

    这个宏定义的工作原理是:首先通过`sizeof(a)`获取变量a的大小,然后利用位操作`|`来设置最高位为1,最后比较这个新值是否大于0。对于有符号类型,如果原值为负数,则加上最高位的1后结果仍小于0;而对于无符号类型...

    判断操作系统

    总结来说,判断操作系统通常涉及对系统API的调用、注册表查询、系统文件分析、环境变量检查以及使用内置或第三方工具。正确地识别操作系统版本对于确保软件兼容性和优化性能至关重要。随着Windows家族的不断演进,...

    32位汇编1

    本文将深入探讨32位汇编语言,对比16位汇编,并介绍相关知识点。 首先,我们来了解一下16位实模式和32位保护模式的区别。16位实模式是早期的x86架构模式,具有一个特权级,仅提供1MB的物理内存空间。在这个模式下,...

    位运算常用操作总结

    位运算是一种对二进制数据进行操作的高效方式,在计算机科学领域具有广泛的应用。本文将详细介绍位运算的各种常用操作及其应用场景,并通过具体例子加深理解。 #### 一、位运算基本概念 位运算涉及到的操作主要...

    判断字符串是否为IP地址

    ##### 方法三:逐位判断法 这种方法首先检查句点的数量是否为3个,然后将字符串分割成四个部分,分别判断每一部分的值是否在0到255之间。 ```c void isIPaddress(char* str) { char temp[10] = {0}; int i = 0, j...

Global site tag (gtag.js) - Google Analytics