C语言大神进。

#include<stdio.h>intmain(){inta[]={1,2,3,4,5};int*p=a;printf("%d,%d,%d,%d,%d,%d,%d\n"... #include <stdio.h>
int main()
{
int a[] = {1,2,3,4,5};
int *p = a;

printf("%d,%d,%d,%d,%d,%d,%d\n",*p,*(++p),(*p)++,*p,*p--,--(*p),*p);

return 0;

}
大神说下会打印出什么结果,求解释。
展开
 我来答
旷若英5O
2013-11-26 · TA获得超过1045个赞
知道小有建树答主
回答量:295
采纳率:0%
帮助的人:118万
展开全部
这个根据编译器而定。
因为在c语言标准中,只规定了一个表达式中出现一个++或--运算的规则,对于多个++或--,执行顺序和时机完全看编译器自身。也就是此类问题是语法上合法,但是实际执行结果是不确定的,根据不同编译器而不同。
楼主自己写程序最好每个表达式中只有一个++或--,否则结果就是随机的。
更多追问追答
追问
写程序当然不会写成这样。这是课本上的一道题目,我运行的答案和课本给出的答案是一致的,是 2 2 0 0 0 0 1,用的是visual c++ 6.0。求这个结果的解释。
追答
你的课本是99年之前的吧,用最新的vs执行会报错的,用99年之后的标准几乎不能得到这个结果。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式