我最近在这里问了一个关于尺寸的问题char
.看着我的问题,它给我带来了另一个问题:
有些事情就像位数的char
或sizeof(int)
依赖CPU,OS依赖,依赖于编译器,或上述的某种组合?谁决定sizeof(int)
我的编译器是4?
编辑:让我解释一下:例如,我在64位系统上的编译器使用32位int
.编译器或操作系统是否将此设置为此(精确)OS /平台组合上所有编译器的标准int?如何char
= 8位?OS可以决定使用16位字符吗?可以编译吗?
我正在 64 位上使用 GCC 编译 C++ 程序 - machine/OS/(带有-m64
传递给 的选项g++
)。正如预期的那样,sizeof(long double) == 16
– 我想知道是否有 16 字节长的整数标准类型?
PS__int128_t
是一种人工扩展,它模拟我所理解的标准类型。除此之外我什么也没找到。
MPI基本数据类型对应于主机语言的数据类型,MPI_BYTE和MPI_PACKED除外.我的问题是使用这些MPI基本数据类型有什么好处?或者等效地,为什么仅使用主机语言数据类型是不好的?
我阅读了William Gropp等人的教程.在幻灯片31"为什么是数据类型"中,它说:
(http://www.mcs.anl.gov/research/projects/mpi/tutorial/mpiintro/ppframe.htm)
我没有理解这个解释.首先,如果基本数据类型不同,我不明白为什么使用MPI数据类型可以解决差异,因为基本MPI数据类型对应于主机语言的基本数据类型(基本数据类型).其次,为什么这种面向应用的内存数据布局有两个好处?
任何解答我原始问题的答案都将被接受.任何答案都可以解决我的问题,威廉格罗普的解释也将被接受.
我试图使用Cython内存视图而不创建或使用numpy数组,所以我从来不必编译numpy,但我想返回Python端可以"转换"为numpy数组的东西.例如,我有这个函数,它接受一个2D数组并返回一个新的1d数组:
cimport cython
from cython.view cimport array as cvarray
cpdef int[:] myfunc(int[:,:] input_arr, int arr_len):
cdef int i
# allocate new int array
cdef int[:] new_arr = cvarray(shape=(arr_len,), itemsize=sizeof(int), format="i")
for i in xrange(arr_len):
if input_arr[i, 0] == 1:
new_arr[i] = 0
else:
new_arr[i] = 1
return new_arr
Run Code Online (Sandbox Code Playgroud)
现在从Python我实际上想要将一个numpy数组传递给该函数并将结果视为一个numpy数组:
# From Python
import numpy as np
data = np.array([[0,0,0],[1,0,1]], dtype=np.dtype("i"))
result = myfunc(data, data.shape[0])
# How do I make 'result' accessible as numpy array here??
# ...
result …
Run Code Online (Sandbox Code Playgroud) 通常,INT_MIN
是-2 ^ n
和INT_MAX
是2 ^ n - 1
是否保证,如果x
是正数型,int
那么expressoin -x
不会导致溢出?
我出生在现代世界,所以我不经常需要处理这类事情,但有人可以解释如何在以下代码中获得正确的数字.这是许多人的一次尝试:
#define X 2527
#define Y 2463
#define Z 3072
main()
{
long int c = X*Y*Z;
printf("%ld",c);
}
Run Code Online (Sandbox Code Playgroud)
我只是想打印一个长整数,但它总是打印错误的结果.我得到整数溢出 - 如果是这样我怎么能防止它们?或者它是我选择的printf格式化程序?
我们有一个应用程序可以在MongoDB中存储来自C/C++的一些配置值,并且具有重新启动的能力(即它运行一段时间,有人中断应用程序,更改配置,然后再次运行应用程序,然后它在它离开了).这就像布尔和字符串配置的魅力.
但是我们有一些整数(在我们当前的C/C++实现中 - 32位值).当我使用MongoDB控制台修改这些整数值时,Mongo总是将它们存储为Number(在C/C++实现中是可靠的).我们将更改应用程序以获取期望整数的双值,但我想知道是否有办法迫使Mongo从其JavaScript控制台存储整数.
有什么建议?
我对这个话题进行了深入的研究.但这个问题并不清楚.任何人都可以帮我解决这个问题. http://www.php.net/manual/en/language.types.float.php 这个链接没有正确描述.
在我的机器PHP_INT_SIZE
上8
,pack('i',1)
无论如何返回一个4字节的字符串.
文档说i
是一个"有符号整数(机器相关的大小和字节顺序)",但似乎并非如此.它固定为4个字节?
这意味着unpack('i',pack('i',PHP_INT_MAX))[1] !== PHP_INT_MAX
在64位计算机上,因为一半的数据被删除了.
我试图检查关于C++的QA练习,一个问题让我抓狂!
typedef struct {
unsigned int i : 1;
} myStruct;
int main()
{
myStruct s;
s.i = 1;
s.i++;
cout << s.i;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是什么是输出:0/1/2/3/-1 /段错误?
我确实检查了2这是一个错误的答案:D,那么为什么程序显示为0?