#include <stdio.h>
main()
{
int a=5,b=4,x,y;
x=a++*a++*a++
printf("a=%d,x=%d\n",a,x);
y=--b*--b*--b;
printf("b=%d,y=%d\n",b,y);
}
难道不应该是x=(a++)*(a++)*(a++)=5*6*7=210吗?
谢谢,我一直弄不懂结合性和优先级。
另外
#include <stdio.h>
main()
{
int x=0177;
printf("x=%-3d,x=%3d,x=%-6d,x=$%06d,x=%%06d\n",x,x,x,x,x);
}
x=$%06d打印出来的结果为什么是x=$000127?
可以给我讲解一下%06d这个格式控制字符串吗?这个0代表什么意思啊?以0宽度输出?
非常感谢。请原谅我的无知,因为我自学,无人指导,苦闷中。
參考答案:首先,第一道根本不用浪费时间去思考,因为那样的编程是最烂的,没任何意思,是有些参考书的"中国特色",毫无意义.良好的编程要有简单性,让人一看就懂,即使是好的程序员,也不一定记得住那么多条条框框,他们一般使用括号来标识优先性,那才是好的程序.记住,程序让别人看得懂,看得明白,看得宽心那才叫程序.
然后,第二道x=$%06d,%d说明以十进制格式输出,6指明输出位数为6位,且以右对齐方式输出,不足以空格填充,而0说明用0填充不足的空格,即以0代替空格.故有x=$000127.(x=0177为八进制,转化为十进制为127)
补充:第一题你只要懂得前自增跟后自增的区别就行,其实很多程序自增都是用在循环中,前后自增都一样,只不过考试那些东西才那么死板,老是抓住那不放,抗议中国式考试