C语言一道题当执行以下程序段后,i的值是()j的值是()k的值是(){int a,b,c,d,i,j,k;a=10;b=

问题描述:

C语言一道题
当执行以下程序段后,i的值是()j的值是()k的值是()
{int a,b,c,d,i,j,k;
a=10;b=c=d=5;i=j=k=0;
for(;a>b;++b) i++;
while(a>++c) j++;
do k++;while(a>d++);
5 4 6
为什么k的值是6?a>d++是先判断a是否大于d,然后执行循环体,然后再执行d++,再判断a是否大于d吗?
麻烦把这个程序的运算顺序跟我说一下好吗?
1个回答 分类:综合 2014-10-16

问题解答:

我来补答
a>d++ 是先判断a>d,再d++,
a>++c 是先c++,再判断a>c,
for的那个,是b=5,6,7,8,9的时候会执行i++,所以是5
while的那个,相对于for的那个,是c一上来先被加一了,所以少了一个,(c自加完之后)c=6,7,8,9的时候会执行j++,所以是4
do-while的那个,相对于for的那个,k上来先被加了1(do while循环体先执行一次),而(d自加完之前)d=5,6,7,8,9的时候会去执行k++,所以是6
话说这种问题我也感觉比较纠结,所以我可能也会犯错,见谅……
再问: 是先执行完for循环,再执行完while循环,最后在执行完do while循环吧,中间没有嵌套问题对吧
再答: 对,因为没有大括号的时候,for、while、do只对后面的一条语句有效。
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识