C语言for循环条件中仅写变量i的含义及等效i>0原因咨询
关于C语言for循环条件中直接写变量i的解释
先看你的代码:
int main() { for(int i=3;i;i=i-1) { printf("*"); } return 0; }
核心逻辑:C语言的布尔值规则
C语言里没有专门的布尔类型(C99新增的_Bool本质也是整数),它判断真假的规则很简单:
- 任何非零值都被视为“真”
- 只有0被视为“假”
你的循环具体执行过程
- 初始化
i=3,非零,条件为真,进入循环打印*; - 循环后执行
i=i-1,i变成2,非零,继续循环打印; - i再减1变成1,非零,第三次打印;
- i减到0时,条件为假,循环终止。
所以总共执行3次,输出***。
和i>0写法等价的原因
当i是正整数时,i和i>0的判断结果完全一致:
- 当i>0时,i本身是非零值(真),
i>0的结果是1(真); - 当i=0时,i是0(假),
i>0的结果是0(假)。
直接写i是C里的常用简写,和i>0效果完全一样,只是更简洁而已。
内容的提问来源于stack exchange,提问作者Formal_that
相关产品推荐
相关产品推荐

