c语言问题

1。inti=5;do{printf("%d\n",i--);i--;}while(i!=0);为什么循环次数是无限的?当i--到0的时候不就不能达到循环条件而停止么?2... 1。 int i=5;
do
{
printf("%d\n",i--);
i--;
}while(i!=0);
为什么循环次数是无限的?当i--到0的时候不就不能达到循环条件而停止么?
2。
#define MAX(x,y) (x)>(y)?(x)>(y)
main()
{
int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\n",t);
}
中 (x)>(y)?(x)>(y)的意义是什么?
3。C语言中各种变量所占字符数?
4。int x=11则(x++*1/3)的值为3,怎么算出来的?
5。int b[][3]={{1},{3,2},{4,5,6},{0}},则a[2][2]值为多少?怎么算出来的?
第二题中的“?”是什么意思
展开
 我来答
不帅人不爱
2009-06-25 · TA获得超过205个赞
知道小有建树答主
回答量:197
采纳率:0%
帮助的人:193万
展开全部
第一个问题:首先第一次执行循环,输出5,然后i自减两次,判断时I=3,第二次循环后i=1,第三次后i=-1,所以i没有机会等于0啊,就无限循环了呗,重点在你的两次i——了。
第二个问题:我觉得是写错了,应该是#define MAX(x,y) (x)>(y)?(x):(y) 宏定义MAX函数 取较大的数。
第三个问题:这个你去百度一下,太多了不好打字,我复制粘贴也没意思。而且根据系统不同会有所差别。
第四个问题:首先不建议这么书写,根据符号的优先级,先计算x++ 但残余预算的是x=11的时候的x 也就是11*1/3 因为x是int型,为什么是3而不是4应该知道吧,舍去小数部分。 重点是x++是先使用后自加,最后以后加上小括号。
第五个问题:二维数组,你的赋初值方法是从b[0][0]开始的,后面依次是b[0][1],...b [3][3]。b[0][0]={1,0,0},b[0][1]={3,2,0}...因为b[2][2]并没有赋初值,所以为{0,0,0}。 没有赋初值的变量系统会赋默认的初值,具体还是看看每种变量的默认初值去吧。
回答完毕~!

x>y?x:y 判断x>y 如果真则执行x,否则执行y,相当于一个if...else语句
if(x>y)
t=x;
else
t=y;
你还是多看看书吧 基础要扎实,这样就研究实例不是个好做法啊。
匿名用户
2009-06-25
展开全部
1)因为i的初始值是5,这是一个奇数,循环体内,i每次循环减小2,永远是个奇数,i永远不可能等于0.故死循环。

2)这是错误的代码。

3)取决于具体的编译器。

4)11/3=3,这个不用我解释了吧?

5)6.自己数数就知道了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
5102569261
2009-06-26
知道答主
回答量:20
采纳率:0%
帮助的人:0
展开全部
我觉得你写错了,应该是#define MAX(x,y) (x)>(y)?x:y。
这是if(x>y) MAX=x;else MAX=y;的简写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式