鱼C论坛

 找回密码
 立即注册
查看: 1614|回复: 3

[已解决]NO.147程序细节意义

[复制链接]
发表于 2022-2-24 16:36:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 我爱橙 于 2022-2-25 10:27 编辑
#include <stdio.h>

int main()
{
        char c[]="abc";//定义字符c里有abc?
        
    int i=0;//定义初始i的值
    
    do;
    
    while(c[i++]!='\0');//c[1]不等于0?
    
    printf("%d",i-1);//输出1-1=0?
        
        return 0;
}

可以说是每一句都看不懂了

最佳答案
2022-2-24 17:13:41
do后面接分号不对吧,不过你不接分号也不影响结果
因为你do while 你可以再do while改成这样
#include <stdio.h>

int main()
{
        char c[]="abc";//定义字符c里有abc?
        
    int i=0;//定义初始i的值
    
    do
    {
            printf("%d\n", i);
        }
    while(c[i++]!='\0');//c[i]不等于0?
    
    printf("%d",i-1);//输出4-1=3
        
        return 0;
}

还有就是 i++是先执行语句再加一, 而++i是先加一再执行语句,如果换成了++i  结果是3 - 2 = 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-24 17:02:48 | 显示全部楼层
本帖最后由 阿萨德按时 于 2022-2-24 17:04 编辑

1.定义的是字符串数组,放abc进去
2.C语言中字符串结尾是'\0',所以c中存放的其实是a,b,c和\0。
3.这句是最后执行的,在do while语句中i++执行了4次,所以最后输出4-1是3,就是字符串的长度

个人理解 不对请大佬们指正
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-24 17:13:41 | 显示全部楼层    本楼为最佳答案   
do后面接分号不对吧,不过你不接分号也不影响结果
因为你do while 你可以再do while改成这样
#include <stdio.h>

int main()
{
        char c[]="abc";//定义字符c里有abc?
        
    int i=0;//定义初始i的值
    
    do
    {
            printf("%d\n", i);
        }
    while(c[i++]!='\0');//c[i]不等于0?
    
    printf("%d",i-1);//输出4-1=3
        
        return 0;
}

还有就是 i++是先执行语句再加一, 而++i是先加一再执行语句,如果换成了++i  结果是3 - 2 = 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-24 17:27:25 | 显示全部楼层
阿萨德按时 发表于 2022-2-24 17:02
1.定义的是字符串数组,放abc进去
2.C语言中字符串结尾是'\0',所以c中存放的其实是a,b,c和\0。
3.这句 ...

感谢前2条指教,后面i++还是有点绕,不过看下楼的懂了(&#65377;&#65381;ω&#65381;&#65377;)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表