在这段C语言程序中,为何要在for循环语句末尾添加分号?
解释第一条for循环末尾分号的作用
先看这段代码里的第一条for循环:
for(l=1,t=n/10;t!=0;t/=10,l*=10);
这个分号表示循环体是空语句——也就是说,这个for循环的唯一作用就是完成变量初始化、条件判断,以及每次循环时的变量更新,不需要执行任何额外的代码块。
具体功能拆解
这个循环的目标是计算输入数字n的最高位对应的权值:
- 初始时
l=1,t=n/10(去掉n的最后一位) - 每次循环:
t除以10(继续去掉最后一位),l乘以10(提升一位权值) - 直到
t变成0时停止循环,此时l的值就是n最高位的权值(比如输入123的话,循环结束后l=100)
这个l的值会在第二个for循环里用到,用来逐步截取n的高位部分并输出(比如123会依次输出123、23、3)。
为什么必须加这个分号?
如果去掉分号,紧接在后面的printf("The pattern");会被当成这个for循环的循环体,程序会反复执行这个printf直到t变为0,这完全偏离了原本的逻辑——我们只需要这个循环完成权值计算,不需要它执行打印操作。所以分号的作用就是明确告诉编译器:这个for循环没有具体的循环体,只执行括号内的循环控制逻辑。
内容的提问来源于stack exchange,提问作者Rahbar
相关产品推荐
相关产品推荐

