/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int x=2;
while(x--);
printf("%d\n",x);
}
结果-1
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n)
m*=2;
printf("%d\n",m);
}
结果1024
----------------解决方案--------------------------------------------------------
第一个:
main()
{
int x=2; //x的初始值为2
while(x--);
/*注意,这个while后有个分号,即表明,这个while循环体是空语句,这里检查x,逻辑表达式中,c语言认为非0就是真,所以,x一直递减,当x=0时,退出这个while循环,此时由于x--是后减操作,所以x继续减1,最后得到-1*/
printf("%d\n",x);
}
程序步骤
次数 x while判断 x的操作
1 2 true x--
2 1 true x--
3 0 false x--
4 -1 打印x
第二个:
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n) //k++是后加操作,所以这个循环一共执行10次,相当于for(k=1;k<=n;k++),最后就是2^10
m*=2;
printf("%d\n",m);
}
----------------解决方案--------------------------------------------------------
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int x=2;
while(x--); /*相当于while(x) x--;*/
printf("%d\n",x);
}
结果-1
/* Note:Your choice is C IDE */
#include "stdio.h"
main()
{
int k,n,m;
n=10;m=1;k=1;
while(k++<=n) /*同上,这两行代码相当于while(k<=n){k++;m*=2;}*/
m*=2;
printf("%d\n",m);
}
结果1024
----------------解决方案--------------------------------------------------------
haha,原来加了个分号就变成了空语句,不为零就变成了真,看来2进制的机器还是挺兼容23456。。的吧~~
感谢各位这么迅速就作出了有效的解释
----------------解决方案--------------------------------------------------------
没有必要分析的这么详细
----------------解决方案--------------------------------------------------------
2楼真详细...
----------------解决方案--------------------------------------------------------
精神可嘉
----------------解决方案--------------------------------------------------------
还是有些不明白,k跟m有什么关系呢,k自加,但变量m不一直没有变化吗?那k跟m又没关系,怎么会出现结果1024的呢,还望帮助!
----------------解决方案--------------------------------------------------------
m*=2表示m自乘2所得值赋予m,即m=m*2
----------------解决方案--------------------------------------------------------
楼上说的没错,但k跟m有什么关系呢,为何结果是1024,能不能把过程说一下?
----------------解决方案--------------------------------------------------------