C语言问题请教高手~~~~~~~

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:51:01
请问下面程序的运行结果是多少?
main ()
{int a[]=(1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf("%d\n",*p+9);
}
我觉得是0,但答案好象是10,*p+9是不是指向第10个元素?
请帮忙解决一下

*p+9 相当于 a[1]+9
*(p+9)是第十个元素。

*p+9相当于(*p)+9,即p[0] + 9

这是个运算优先问题;*运算要高于+ 所以 先算* 在加9 ;所以答案就知道了吧! 兄弟要好好复习下 优先级的问题呀!括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== !=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到 13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!
逗号运算级最低! //逗号运算符优先级最低