C语言问题——该for语句是如何运行的,为什么会运行出那样的结果?

来源:百度知道 编辑:UC知道 时间:2024/05/20 01:32:44
#include <stdio.h>
main()
{
int i;
char *s="a\045+045\'b";
for(i=0;*s++;i++)
{
printf("%c",*s);
printf("%d",i);
}

}
这个程序,大家可以先运行一下,可以肯定的是没有语法的错误。

程序调试如下,运行环境为win-tc
main()
{double i;
float j;
for(i=0.26;i<=0.36;i+=0.05)
printf("hao,i=%2.9f\n",i);
for(j=0.26;j<=0.36;j+=0.05)
printf("hao,j=%2.9f\n",j);
getch();
}

hao,i=0.260000000
hao,i=0.310000000
hao,i=0.360000000
hao,j=0.259999990
hao,j=0.310000002

不难看出结果是为什么了????

你都没有指定循环的次数 for(i=0;*s++;i++)
这个语法也不正确 晕

for循环的确有问题

不知道你要实现什么样的功能?

如果要输出字符串的话printf("%s", s);就可以了

如果想要记录每个字符的位置,还是用字符数组比较好

是没有语法错误,但是逻辑上不对,运行的结果就不是自己想要的

我对你这段代码有不同的看法.
从语法结构上看,你的for循环的条件有一定问题,虽然没语法错误,但是你的*s++就有问题了,第一次循环时没问题,还是你要的字符串的首地址元素,但是你后几个循环给++了,所以从逻辑上看,你得到的是内存中不定的数据.按道理来讲应该是死循环.即使得到的数据也跟你定义的字符串没多大关联.