解释#include "stdio.h"struct student{ int num; int age;};void main(){ struct student stu[3]={{1000,20},{2000,19},{3000,23}}; struct student *p; p=stu; printf("%d\n",p->num++); printf("%d\n",++p->num); printf("%d\n",(p++).num); printf("%d\n",(++p).num);} 运行结果
时间: 2024-01-30 17:02:41 浏览: 47
#include <stdio.h>
这段代码的运行结果如下:
```
1000
2002
2001
3000
```
这里的输出结果跟上一个问题稍有不同,主要是因为第三个和第四个输出语句的括号位置不同。
第一个输出语句 `printf("%d\n",p->num++);` 输出了 `stu` 数组中第一个元素的 `num` 成员变量的值 1000,然后将 `num` 自增为 1001。
第二个输出语句 `printf("%d\n",++p->num);` 对 `p` 指向的第二个元素的 `num` 进行前缀自增操作,将其值从 2000 变成 2002,并输出。
第三个输出语句 `printf("%d\n",(p++).num);` 输出了 `p` 指向的第二个元素的 `num` 成员变量的值 2001,然后将 `p` 指向第三个元素。
第四个输出语句 `printf("%d\n",(++p)->num);` 对 `p` 进行前缀自增操作,将其指向第三个元素,然后输出该元素的 `num` 成员变量的值 3000。值得注意的是,这里需要加括号来明确自增操作的优先级,否则会导致指针的位置计算错误。
阅读全文