c语言while,if表达式的问题,请教高手!

来源:百度知道 编辑:UC知道 时间:2024/05/11 12:47:38
……
int k=10;
while(k)或者if(k)
k--;
……
括号里填k>0,不行吗?
为什么书上答案都写K?
请详解!谢谢!

昏,都解释的那么复杂,简单地说就是所有的各种判断都是判断这个条件是否为0,是0条件就为假,不是零,条件就为真,所以说if(k)和if(k!=0)和if(k>0||k<0)和if((k>0||k<0)!=0)是一样的,看我后面两个式子就明白了

bool值,只有ture和false,即真和假
int型的0为对应真,非0对应假
while和if都是当判断条件为真的时候执行后面紧跟的主体
所以while(k)等价于while(k!=0),if(k)等价于if(k!=0)
虽然就你举的例子来说会得到相同的结果,即k减小到0就退出循环体,执行后面的语句..但明显k!=0和k>0是不同的
比如
int k=-10;while(k)k++; //if(k)k++;
也能起相同的效果

while是循环
if是条件判断
while(k)是只要k不为0则继续执行,可执行多次直到k为0.
if(k)当判断到k非0则执行一次,之后不会再执行了.
对于这段代码来讲k和k>0是等价的,可以改.

你那样是可以的
c语言追求的是简练明了
能不多一个就不多一个
这是一种追求
一个程序员应该具有的

如果你写成 while(k>0){k--;}
这个写跟不写一样的k还是调用上面的k=10;
while(k)判断的是k的情况,如果k为真则循环,当循环到k=0是就跳出,就这样的,
如果用if就只是简单的判断条件,你也可以这样if(k!=0)
while(1) 这个起无限循环作用,1为真.
k--;

while(k) = while (k>0)
简写的原因是使用系统缺省的表达式,但是自己的心理一定要清楚前一个式子等于后一个式子,这对于老手来说是常用的写法,但对于新手不推荐,因为自己容易搞混!