面试时遇到的两个问题,不解,求救

weir75034 weir75034 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1.设

int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));

结果怎么会是:
8,8
*(ptr++)+=123后arr[]怎么会变为
arr[]={129,7,8,9,10};
难道*(ptr++)+=123相当于
*(ptr) += 123;
ptr++;
可以为什么*ptr,*(++ptr)又都是8呢???

2.定义:

union U
{
struct
{
unsigned int a:1;
unsigned int b:2;
unsigned int c:3;
} I;
char chr;
};

void main()
{
U u;
u.chr = 100;
printf("%d,%d,%d,",u.I.a,u.I.b,u.I.c);
}

结果是0,2,4呢????
...全文
评论 27
收藏 已收藏
分享
返回顶部
weir75034
C语言 70,039 成员 243,237 内容