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