永发信息网

*ptr=3;a=(*ptr)++; 为什么a=4啊?????

答案:3  悬赏:70  手机版
解决时间 2021-04-11 07:50
*ptr=3;a=(*ptr)++; 为什么a=4啊?????
最佳答案
这个在不同的编译器上结果不同
我在三个在线编译器上测试了下列代码
int a = 0, *pt;

pt = &a;
*pt = 3;
a = (*pt)++;
printf("%d", a);
结果为3
但是在我自己电脑上的编译器Microsoft Visual C++ 2010 Express
运行结果却是4
(因为按理来说a=(*pt)++和a=a++是等价的 无论运行多少次a的值是不变的)
你说的这道题是计算机二级选择题的一道真题
有一个很奇怪的现象,我再次在Microsoft Visual C++ 2010 Express上测试了
int a = 0;
a = a++;
a = a++;
printf("%d", a);
结果是2
但是我在三个在线编译器的运行结果都是0,群里有人帮用gcc 7.3.0跑了一下代码结果也是0,
按优先级、结合性来解释结果应该是0
综上:Microsoft Visual C++ 2010 Express的锅(这样的代码少写)
考二级C的朋友只能硬记了,二级C的编译器就是Microsoft Visual C++ 2010 Express
全部回答
因为++运算符的优先级比赋值=高,先取*ptr的值为3,然后++变成4,最后在赋给a,所以a=4
*ptr=a[0][0]=1 *(ptr+2)=a[0][2]=3; *(ptr+4)=a[1][1]=5 最后结果是15,不是24。我已经跑过一遍,不会错的。 ptr是整个数组的首地址,那么*ptr=a[0][0]是无可争议滴!,接着ptr+2,很明显是a[0][2]的地址,因为二维数组在存储的时候是线性存储的,不存在二维,仅仅是逻辑上的二维而已,那么ptr+4其实就是从a[0][0]之后数四个数,那么就得到其是a[1][1]的地址,即是5的地址。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
火影漫画的最新剧情是什么?
在家,简单的手工制作有哪些?必要时可以卖几
单选题等腰三角形两边长分别为4和5,这个三角
北京有卖乌苏弹弓皮筋的实体店吗
南充是四川第二大城市吗?
我的事业与爱情还有生命
芝罘区祥府酒水商行在哪里啊,我有事要去这个
老师和家长怎么交流,家长如何和大学老师交流
QQ飞车要哪些技术啊?
数学题困难,高手帮忙
乐理(吉他)高手进!!!
解答题请把下面器官与功能分别用线连起来.A
给我儿子起名
爸爸存折丢了,本人住院,我怎么办理
现在去南方穿衣服该怎么穿
推荐资讯
爱的教育里很美的句子,我非常喜欢这辆玩具汽
请问我应聘的时候公司给我发送公司地址短信,
明明已分手,为什么我还这样忘不了?这几天梦
怎么百度一键root后 ,弄的时候怎么会自动关
老而酒吧我想知道这个在什么地方
谁可以写一篇文章给我?
DNF召唤法杖要强化有什么好处啊、
邓丽君的歌曲有哪些是用的古诗词的?
唐三彩是怎么体现唐朝的繁盛
澄海3c4.9里牛头践踏晕不了40狼,但伤血,为
安静等他回来的句子,赞美泰山的古诗句
太阳宝太阳能(高邮市武宁乡农机化管理服务站
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?