菜鸟的简单问题!会C语言的大虾请进~

王朝知道·作者佚名  2012-03-23
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

#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)

补充:第一题你只要懂得前自增跟后自增的区别就行,其实很多程序自增都是用在循环中,前后自增都一样,只不过考试那些东西才那么死板,老是抓住那不放,抗议中国式考试

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航