问一个初程考试题,来者有分

musictornado 2002-10-04 11:16:05
#include <stdio.h>

main()

{ struct num{ int x; int y;}

sa[] = {{2, 32}, {8, 16}, {4, 48};

struct num *p = sa+1;

int x;

x = p->y / sa[0].x * ++p->x;

printf(″x = %d p->x = %d\n″, x, p->x);

}


程序1.1的输出结果是_________
...全文
36 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
musictornado 2002-10-04
  • 打赏
  • 举报
回复
此题是99年的下午题。
好了,问题解决了,送分!!!
ylbug 2002-10-04
  • 打赏
  • 举报
回复
记得给分
robbie24 2002-10-04
  • 打赏
  • 举报
回复
这种东西也只有中国的考试才出的出来~
这个是2000年的题目吧~
Allen_cch 2002-10-04
  • 打赏
  • 举报
回复
++p->x 是使指针指向的值加1;
因为->的优先级比++高, ++p->x 也就是 ++(p->x).
ylbug 2002-10-04
  • 打赏
  • 举报
回复
因为->的优先级比++的优先级高
所以++p->x 相当于++(p->x)
p++->x由于没有++->这个运算符,所以相当于(p++)->x
Allen_cch 2002-10-04
  • 打赏
  • 举报
回复
x = 72 p->x = 9
musictornado 2002-10-04
  • 打赏
  • 举报
回复
这次对了,请问?
为什么++P是使指针指向的值加1,而P++是指针指向的地址加1呢?
ylbug 2002-10-04
  • 打赏
  • 举报
回复
其实就是一个运算符优先级的问题
ylbug 2002-10-04
  • 打赏
  • 举报
回复
刚才写错了p->x=9
musictornado 2002-10-04
  • 打赏
  • 举报
回复
x=72(right);
p-->x=4(error);
ylbug 2002-10-04
  • 打赏
  • 举报
回复
难道是
x=72 p->x=4
musictornado 2002-10-04
  • 打赏
  • 举报
回复
no!
xpaul 2002-10-04
  • 打赏
  • 举报
回复
x=32 p->x=4
musictornado 2002-10-04
  • 打赏
  • 举报
回复
重点是++P-->X的运算!
ylbug 2002-10-04
  • 打赏
  • 举报
回复
可能与编译器有关
可能的结果:
x=32 p->x=4
x=96 p->x=4
你用TC,BC,VC不同的编译器试一下,可能有这两种结果
musictornado 2002-10-04
  • 打赏
  • 举报
回复
不对,再想想吧!
Cybergate 2002-10-04
  • 打赏
  • 举报
回复
x: 16/2*4=32
p->x: 4

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧