| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 641 人关注过本帖
标题:有关结构体指针变量的一道题
只看楼主 加入收藏
simplelive
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-2-20
收藏
 问题点数:0 回复次数:1 
有关结构体指针变量的一道题
求程序的运行结果:答案是2,3
#include <stdio.h>
union ks
{ int a;
  int b;
 };
union ks s[4],*p;
main()
{
  int n=1,i;
  printf("\n");
for(i=0;i<4;i++)
  {s[i].a=n;
   s[i].b=s[i].a+1;
   n=n+2;
  }//*我理解是在这里给共用体类型数组赋初值结果是
s[0]={1,2},s[1]={3,4},s[2]={5,6},s[3]={7,8}//*共用体是不是应该只有一个值,是最晚赋值的成员,此处是b值,如果是这样第一个输出可以理解
p=&s[0];
printf("%d,",p->a);
printf("%d\n",++p->a);//*此处相当与++(p->a),->运算符在个运算符中优先级是处于哪个位置.如果是(++p)->a,那么该值是不是就是4.
}
搜索更多相关主题的帖子: 变量 结构体 指针 int 
2008-03-17 22:26
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
[bo]以下是引用 [un]simplelive[/un] 在 2008-3-17 22:26 的发言:[/bo]

求程序的运行结果:答案是2,3
#include
union ks
{ int a;
  int b;
 };
union ks s[4],*p;
main()
{
  int n=1,i;
  printf("\n");
for(i=0;ia);
printf("%d\n",++p->a);//*此处相当与++(p->a),->运算符在个运算符 ...


OK,我注意到了你的问题。你的问题实际上就是++和->之间的优先级关系。结果是->的优先级比++高,因此上面的实质是++(p->a);
你赋值循环以后,其数据是{2},{4},{6},{8}
执行++p->a以后,变成{3},{4},{6},{8};先执行a的自增运算,再打印a。
所以输出结果是2,3。

关于运算符优先级,可以参考下面的地址,给出的是c++运算符的优先级顺序:

http://www.

优先级   运算符            
1,       :: (域)
2,      (),[],->, . , ++,--后缀
3,     !,~,++,--(前缀),-(负号),+(正号),*(取数据),&(取地址),(type)强制类型转换,sizeof

可见->的优先级恰比++和--前缀 高一级。

[[it] 本帖最后由 hoodlum1980 于 2008-3-18 00:39 编辑 [/it]]
2008-03-18 00:07
快速回复:有关结构体指针变量的一道题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012711 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved