首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

所有体系结构上sizeof(float)总是等于sizeof(int)吗?

对于体系结构上,sizeof(float)sizeof(int) 不总是相等。根据不同的CPU和体系结构,sizeof(float)sizeof(int) 的结果可能是不同的。但在大多数情况下,sizeof(float)sizeof(int) 的结果都是相同的。

对于大多数CPU和体系结构来说,sizeof(float)sizeof(int) 的结果是相同的,因为浮点数和整数使用相同的寄存器和存储方式。但是,在某些情况下,sizeof(float)sizeof(int) 的结果不同,例如在某些使用浮点数特殊指令的CPU上,或者在使用自定义体系结构的情况下。

因此,在编写代码时,应该使用 sizeof(float)sizeof(int) 之前先检查具体的CPU和体系结构,并在需要时进行适当的调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

sizeof 操作符详解

我们调用函数foo1时,程序会在栈分配一个大小为3的数组?不会! 数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。 7....让我们先看一个结构体: struct S1 { char c; int i; }; 问sizeof(s1)等于多少?...聪明的你开始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。 是这样? 你在你机器试过了吗? 也许你是对的,但很可能你是错的! VC6中按默认设置得到的结果为8。...为什么受伤的总是我? 请不要沮丧,我们来好好琢磨一下sizeof的定义 —— sizeof的结果等于对象或者类型所占的内存字节数。...***************************************************** 输出结果为12(我的机器sizeof(float)值为4,字节对其前面已经讲过)。

76030

DAY39:阅读扩展数据类型

, uint14int2, uint28int3, uint34int4, uint416long1, ulong14 if sizeof(long) is equal to sizeof(int) 8...事情都是在代价和收益权衡的. (3)一些卡, 必须使用float4之类的向量类型才有性能, 主要是Kepler这一代:还记得之前的章节中, 我们说过, TLP和ILP是主要的掩盖延迟的方式?...因此使用float4这种, 等于在这代卡, 前后能提供4条无关的依赖链(依赖链是一条前后相关的指令序列), 4个分量之间很多计算是无关的,一下子等于减轻了延迟掩盖要求4X,所以这些向量类型不仅仅能提高读写性能...: (1)含有3结尾的类型是特殊的, 对齐到对于没有3结尾(或者等于1结尾的); (2)其他的所有对齐要求都是元素大小*数量...而此时, 我们的所有线程, 执行的代码都是一样的, 他们唯一的区别就是这些内置变量的值,每个线程都一样的执行代码, 但得到了不同的这些内置的值, 通过简单或者复杂的对这些值的变换(例如int tid

66620
  • CC++刁钻问题各个击破之细说sizeof

    不同类型的数据的大小在不同的平台下有所区别,但是c标准规定所有编译平台都应该保证sizeof(char)等于1。关于sizeof的更多概述你可以在msdn总输入sizeof进行查询。...事实确实如此,目前,几乎所有平台上的所有版本的编译器都把指针的大小看做4byte,不信你试试sizeof(int*);sizeof(void*);sizeof(double*);sizeof(Person...这里n等于4,事实,不管形参是int的型数组,还是float型数组,或者其他任何用户自定义类型的数组,也不管数组包含多少个元素,这里的n都是4!为什么呢?...特性4:sizeof不能求得动态分配的内存的大小! 假如有如下语句:int*a = new int[10];int n = sizeof(a);那么n的值是多少呢?是40?答案是否定的!...我相信有不少人会认为n1与n2相等,也有不少人认为ch等于2,事实这些人都错了。事实n1等于4,n2等于1,ch等于1,为什么呢?

    86020

    sizeof,终极无惑(

    基本数据类型的sizeof 这里的基本数据类型指short、int、long、float、double这种简单内置数据类型,因为它们都是和系统相关的,所以在不同的系统下取值可能不同,这务必引起我们的注意...细致想想就不难明确,我们调用函数foo1时,程序会在栈分配一个大小为3的数组?不会!数组是“传址”的,调用者仅仅需将实參的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。...聪明的你開始思考了,char占1个字节,int占4个字节,那么加起来就应该是5。是这样?你在你机器试过了吗?或许你是对的,但非常可能你是错的!VC6中按默认设置得到的结果为8。 Why?...为什么受伤的总是我?...4 2) 基本类型是指前面提到的像char、short、intfloat、double这种内置数据类型,这里所说的“数据宽度”就是指其sizeof的大小。

    36910

    C++学习笔记---------基础知识sizeof用法

    错了,sizeof不是一个函数,你见过给一个函数传参数,而不加括号的sizeof可以,所以sizeof不是函数。...3、数据类型的sizeof   (1)C++固有数据类型   32位C++中的基本数据类型,也就char,short int(short),int,long int(long),float,double...这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo1时,程序会在栈分配一个大小为3的数组不会!...是这样你在你机器试过了吗也许你是对的,但很可能你是错的!VC6中按默认设置得到的结果为8。...Why为什么受伤的总是我 请不要沮丧,我们来好好琢磨一下sizeof的定义——sizeof的结果等于对象或者类型所占的内存字节数,好吧,那就让我们来看看S1的内存分配情况: S1 s1 = { 'a',

    55810

    数据对齐详解

    例如, W O R D值应该总是从被2除尽的地址开始,而D W O R D值应该总是从被4除尽的地址开始,如此等等。当C P U试图读取的数据值没有正确对齐时, C P U可以执行两种操作之一。...pack(n) 设定对齐系数分为两种情况:第一、如果n大于等于该成员所占用的字节数,那么偏移量必须满足默认的对齐方式,即自然对齐方式。...结构的总大小也有个约束条件,分下面两种情况:如果n大于所有成员变量类型所占用的字节数,那么结构的总大小必须为占用空间最大的变量占用的空间数的倍数; 否则必然为n的倍数。..._iB; 4+4=8   float _fC; 8+4=12 } _objX; 12 int _iD; 12...double _dB; 34 }; 35 36 int main(){ 37 cout << sizeof(Practice1) << endl; 38 cout << sizeof

    1.9K100

    抽丝剥茧C语言(初阶

    实际 IDE 也是这么做的,它会为每一个程序都创建一个专门的目录,将用到的所有文件都集中到这个目录下,并对它们进行便捷的管理,比如重命名、删除文件、编辑文件等。...%d\n", sizeof(short)); printf("%d\n", sizeof(int)); printf("%d\n", sizeof(long)); printf("%d\n", sizeof...(long long)); printf("%d\n", sizeof(float)); printf("%d\n", sizeof(double)); printf("%d\n", sizeof...,变量很麻烦啊,不背单词这部是啥也定义不出来?...10这个数字能变成11?我不是在说可以加上1等于11,而是说10这个数字不经过任何操作让他本身变成11的含义,10就是10,他自己永远表达不了11的意思。 同理,常量就是无法被改变的值。

    29200

    cuda教程

    一般而言,并行部分在GPU运行,串行部分在CPU运行,这就是异构计算。具体一点,异构计算的意思就是不同体系结构的处理器相互协作完成计算任务。...kernel在device执行时实际是启动很多线程,一个kernel所启动的所有线程称为一个网格(grid),同一个网格的线程共享相同的全局内存空间,grid是线程结构的第一层次,而网格又可以分为很多线程块...这么多核心“同时运行”,速度可想而知,这个引号只是想表明实际,软件逻辑所有SP是并行的,但是物理上并不是所有SP都能同时执行计算(比如我们只有8个SM却有1024个线程块需要调度处理),因为有些会处于挂起...n = 1024 * 1024; int size = n * sizeof(float); A = (float*)malloc(size); B = (float*)malloc...( &start, NULL ); float *A, *B, *C; int total_size = ROWS*COLS*sizeof(float); A = (float*

    2.9K30

    offset size_c语言sizeof求结构体长度

    基本数据类型的sizeof 这里的基本数据类型指short、int、long、float、double这样的简单内置数据类型,由于它们都是和系统相关的,所以在不同的系统下取值可能不同,这务必引起我们的注意...指针变量的sizeof值与指针所指的对象没有任何关系,所有的指针变量所占内存大小相等 数组的sizeof 数组的sizeof等于数组所占用的内存字节数,如: char a1[] = "abc"; int...这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo1时,程序会在栈分配一个大小为3的数组不会!...为此,编译器默认会对结构体进行处理(实际其它地方的数据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址,让宽度为4的基本数据类型(int等)都位于能被4整除的地址,以此类推...4 2) 基本类型是指前面提到的像char、short、intfloat、double这样的内置数据类型,这里所说的“数据宽度”就是指其sizeof的大小。

    67710

    DAY37:阅读不同存储器的修饰符

    , uint1 4 int2, uint2 8 int3, uint3 4 int4, uint4 16 long1, ulong1 4 if sizeof(long) is equal to sizeof...(int) 8, otherwise long2, ulong2 8 if sizeof(long) is equal to sizeof(int), 16, otherwise long3, ulong3...4 if sizeof(long) is equal to sizeof(int), 8, otherwise long4, ulong4 16 longlong1, ulonglong1 8 longlong2...而动态分配的虽然也可以写成多个extern __shared__的行在里面, 但是它们所定义的所有数组的起始地址都是一样的, 这就需要你额外进行shared memory的缓冲区拼接, 手工计算偏移量或者指针...(但纯静态的是不能超过48KB的,建议用户自行试验一下(一试即可, 我还没有7.0的卡) 但需要补充说明的是, 你如果发现了一些计算能力的卡, shared memory不那么对齐(例如一个float4

    74440

    OpenMp多线程编程计时问题 原

    *A, float *B, float *C, int M, int K, int N) {     int i, j, k;     for(i = 0; i < M; i++)     {         ...    A = (float *) malloc (sizeof(float) * NUM * NUM);     B = (float *) malloc (sizeof(float) * NUM... *A, float *B, float *C, int M, int K, int N) {     int i, j, k; #pragma omp parallel for private(j,k...    A = (float *) malloc (sizeof(float) * NUM * NUM);     B = (float *) malloc (sizeof(float) * NUM...然而,当到多线程的情况下,一个进程可能有多个线程并行执行,但是user把所有的线程时间都加起来了,也就是算了一个总时间,这样,user的时间也就基本上等于单线程时的user时间。

    77120

    萌新不看会后悔的C++基本类型总结(一)

    也就是约等于你们熟悉的-3.4E38到+3.4E38。...std::cout << sizeof(f); std::cout << sizeof(b); //运行结果为1,2,4,4,8,8,4,1 与所有人一样,一上来我们先了解各个类型占据内存的大小。...比如我们知道char的字节为1,一字节8位可以有256种组合,所以int的字节为4也就是256*256等于65536,这种东西我们理解就好了,没必要背这个最大值,最小值,只需要如何得到就好了。...,最后+1,也就是在反码的基础+1: 正1的补码000000001 负1的补码111111111 复习了原码反码补码后,我们说: 1.无符号数,不存在正负之分,所有位都用来表示数的本身。...类型,而不报错,这时使用sizeof来测量的话得出来的是int的大小,也就是4.

    1.3K41
    领券