首页 > 试题广场 >

在32位系统中以下函数的返回值 int fun(void)

[单选题]
在32位系统中以下函数的返回值是()
int fun(void) {
    int *p, j, i=10;
    p = &j;
    *p = i++;
    i += sizeof(i) + sizeof(*p) + sizeof(p);
    return i;
}
  • 22
  • 23
  • 25
  • 其他结果都不对
*p = i++;所以*p = 10, i = 11;
int型4个字节 所以sizeof(i)和sizeof(*p) 都为4
系统是32位  所以sizeof(p)为32位4个字节;
所以i = i + 4 + 4 + 4 = 23

发表于 2018-09-10 12:25:00 回复(0)
我眼瞎
发表于 2022-05-11 21:42:44 回复(5)
1. 首先分析代码: - 在函数 fun 中,定义了 int *p, j, i = 10; ,这里 p 是一个指向 int 的指针, j 是一个 int 变量, i 初始化为10。 - 然后 p = &j; ,让 p 指向 j 。 - 接着 *p = i++; ,这相当于 j = i++; ,先将 i 的值(10)赋给 j ,然后 i 自增为11。 - 再计算 i += sizeof(i)+sizeof(*p)+sizeof(p);  - 在32位系统中, sizeof(i) ( int 类型大小)为4字节, sizeof(*p) ( int 类型大小,因为 p 指向 int )为4字节, sizeof(p) (指针大小)为4字节。 - 所以 i += 4 + 4+4 ,即 i += 12 ,此时 i = 11+12 = 23 。 2. 答案: - 函数 fun 的返回值是23,答案选B。
发表于 2024-10-25 10:44:34 回复(0)
11+4+4+4=23
发表于 2023-11-01 22:44:11 回复(0)
32位系统下,int类型 4字节,指针类型4字节。
结果=11+4+4+4
发表于 2023-10-15 20:17:42 回复(0)
11+4+4+4
发表于 2023-07-25 23:19:24 回复(0)
为什么*p = i++;之后i=11能代入到下一步
发表于 2023-03-09 10:45:58 回复(0)