首页 > 试题广场 >

32位编译器下,sizeof(void)的值是多少?

[单选题]
32位编译器下,sizeof(void)的值是多少?
  • 0
  • 4
  • 这取决于主机的字的大小。
  • 8
  • 编译错误或者为1
32位win7,vs2010
sizeof(void)提示“不允许使用不完整的类型”,报错。
sizeof(void*)成功,就是指针大小,4字节。
发表于 2015-10-05 18:41:22 回复(1)
此题不对吧?我在g++上测试,变异warning,运行结果是1。而且这样的题目没意义吧,肯定不会这么写。
发表于 2015-09-05 13:12:45 回复(9)
理论上sizeof(void)是0,在VC中的确也是0,而gcc把它定为1。 如果是C++的话, sizeof(void)根本是编译通不过的。
发表于 2021-03-30 17:12:50 回复(0)
真的感觉,可以把这个题下架了,纯粹是为了出题而出题,没有一滴实际意义
发表于 2021-11-10 21:15:28 回复(0)

The type void has no size; that would be a compilation error. For the same reason you can't do something like:

void n;

EDIT. To my surprise, doing sizeof(void) actually does compile in GNU C:

$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc -w - && ./a.out 1

However, in C++ it does not:

$ echo 'int main() { printf("%d", sizeof(void)); }' | gcc -xc++ -w - && ./a.out  <stdin>: In function 'int main()': <stdin>:1: error: invalid application of 'sizeof' to a void type <stdin>:1: error: 'printf' was not declared in this scope

 
编辑于 2018-02-18 16:06:02 回复(0)
在 C++ 中,`sizeof` 运算符用于获取类型或变量占用的内存大小(以字节为单位)。然而,`void` 是一种空类型,它并不占用任何内存空间,因此它没有确切的大小。

在标准的 C++ 中,使用 `sizeof(void)` 会导致编译错误,因为 `void` 类型不允许用于 `sizeof` 运算符。这是因为 `void` 主要用于函数返回类型和指针类型,而不是用于创建变量或对象。

因此,选项 E "编译错误或者为1" 是更准确的答案。在实际的编译器中,一些旧的编译器可能会返回 1,但这并不是标准行为,而且现代的标准 C++ 编译器通常会禁止对 void 类型使用 sizeof 运算符。
发表于 2023-11-15 09:58:05 回复(0)
这取决于编译程序。 因为不能定义void类型的变量,所以它也就不占空间,理论上应该sizeof(void)是0,在VC中的确也是0,而gcc把它定为1。 如果是C++的话, sizeof(void)根本是编译通不过的
发表于 2020-10-15 10:50:07 回复(0)

注意题目是void,不是void*
32位系统下:sizeof(void*)=4

发表于 2020-05-27 17:56:03 回复(0)

sizeof(void) 编译出错,提示   非法的 sizeof 操作数

sizeof(void*) 准确的说,与编译器的目标平台有关。如果目标平台是 32 位的,那么 sizeof(void*) 就是 4 ,如果是 64 位的,那么 sizeof 就是 8 ,如果是 16 位的,就是 2

发表于 2016-03-01 16:33:23 回复(1)
在64位win7 Dev-c++ 中 运行  sizeof(void*) 答案是  8

sizeof(void)  答案是   1

发表于 2015-09-08 18:13:42 回复(1)
sizeof(void)编译出错,提示 非法的 sizeof 操作数
sizeof(void*)=4,即空指针的大小,4字节
发表于 2015-09-05 18:47:22 回复(0)
sizeof(void) 在 vs2022 上编译是直接报错,但在 gcc 上运行为 1
发表于 2023-10-02 17:00:03 回复(0)
太无聊了
发表于 2023-08-26 13:58:24 回复(0)
void*是4个字节,void报错
发表于 2021-12-05 14:21:44 回复(0)
error or 1
发表于 2020-11-06 09:30:02 回复(0)
又是个取决于C++标准和编译器版本的问题,我就服了呀,写代码的时候谁这么写?一天到晚考点花里胡哨的问题,不贴合实际,我giao!!!
发表于 2020-10-30 16:34:12 回复(0)
发表于 2020-05-19 11:59:24 回复(0)
注意括号里是(void)还是(void*)

发表于 2018-05-17 14:46:30 回复(0)

sizeof(void) 编译出错,提示   非法的 sizeof 操作数

sizeof(void*) 准确的说,与编译器的目标平台有关。如果目标平台是 32 位的,那么 sizeof(void*) 就是 4 ,如果是 64 位的,那么sizeof 就是 8 ,如果是 16 位的,就是 2 。

发表于 2018-03-28 22:05:21 回复(0)
此题要么就是写错了,要么就不是为了考证系统对sizeof的影响,32位下指针内存分配为4字节。
发表于 2018-01-13 18:48:05 回复(0)