C语言学习——终于认清了的for循环

C语言编程中for循环表达式顺序问题解析
本文深入探讨了C语言编程中for循环表达式顺序的问题,揭示了为何错误的顺序可能导致循环判断被跳过,并通过实例演示了正确的解决方法。文章旨在帮助程序员避免常见陷阱,提高代码质量。
今天写了这么一段代码,是C语言编程上的3-3的题目
#include <stdio.h>
#include <string.h>

#define MAX 100

void expand(char s[], char t[])
{
	int i;
	int j;
	int k;
	for(i=0,j=0; s[i]!='\0'; i++){
		if(s[i]=='-'&&(i==0||i==strlen(s))){
			t[j] = s[i];
			j++;
		}
		else{
			t[j++] = s[i];
			for(i=i+2;t[j]!=s[i];j++){
				k=j-1;
				t[j] = t[k]+1;
			}
		}
	}
	t[++j] = 0;
}

int main()
{
    char s1[] = "a-c";
    char s2[MAX];
//   	int i;
	int j=1;
	int k=0;
	for(;s2[j]!=s1[2];j++){
		k=j-1;
		s2[j] = s2[k]+1;
	}
    printf("%s", s2);

}
输出一直是这样,百思不得其解,一直以为是字符串出了问题。
<img src="https://img-blog.youkuaiyun.com/20151123124320939" alt="" />

后来发现是for循环的表达式顺序问题,使得在表达式2在判断时被跳过。

for(表达式1;表达式2;表达式3)

       语句;

等价于

while(表达式2){

语句;

表达式3;——在执行到for循环语句时执行

}

排除bug真是艰难。。。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值