Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(浮动)C和x2B的尺寸差异+; 我是C++新手,我在下面的代码中开发了一个等式: fprintf(stderr," inp.width*inp.height*ref.width*ref.height %lld -------->", 2*3 * (long long int)sizeof(float));_C++_Sizeof - Fatal编程技术网

(浮动)C和x2B的尺寸差异+; 我是C++新手,我在下面的代码中开发了一个等式: fprintf(stderr," inp.width*inp.height*ref.width*ref.height %lld -------->", 2*3 * (long long int)sizeof(float));

(浮动)C和x2B的尺寸差异+; 我是C++新手,我在下面的代码中开发了一个等式: fprintf(stderr," inp.width*inp.height*ref.width*ref.height %lld -------->", 2*3 * (long long int)sizeof(float));,c++,sizeof,C++,Sizeof,它可以打印24。为什么它总是乘以4 有人请解释一下(long-long-int)sizeof(float))的作用是什么?操作符返回类型或变量/数组在内存中的字节数。对于本例,sizeof(float)将返回4个字节,因为类型float在内存中为4个字节。因此,当您执行2*3*(long-long-int)sizeof(float)时,它将返回24sizeof(float)计算为编译器用于表示float类型对象的字节数。sizeof运算符返回的值类型为size\u t。前面的(long-long

它可以打印24。为什么它总是乘以4


有人请解释一下
(long-long-int)sizeof(float))
的作用是什么?

操作符返回类型或变量/数组在内存中的
字节数。对于本例,
sizeof(float)
将返回4个字节,因为类型
float
在内存中为4个字节。因此,当您执行
2*3*(long-long-int)sizeof(float)
时,它将返回
24
sizeof(float)
计算为编译器用于表示
float
类型对象的字节数。
sizeof
运算符返回的值类型为
size\u t
。前面的
(long-long-int)
sizeof(float)
的值强制转换为类型
long-long-int
。它不会更改该值,因为该值在编译器中只是
4
,可以很容易地用
long-long-int
表示


强制转换为长整型的目的似乎是为了允许在大多数体系结构上使用格式说明符
%lld”
sizeof(float)
始终为4


必须强制转换为
(long-long-int)
才能匹配
%lld
的格式参数-乘法将自动将结果转换为最大的操作数类型。在这种情况下,由于预期值不会大于常规的
int
所能容纳的值,因此您可以跳过强制转换并使用
%d

除此之外,
%lld
应为
%zu
,并且
(长整型)
已删除。因此,计算机上的浮点值占用的空间是字符的4倍,这在许多机器(x86、arm和其他机器)上非常常见。有什么问题吗?