我爱橙 发表于 2022-2-24 16:36:13

NO.147程序细节意义

本帖最后由 我爱橙 于 2022-2-25 10:27 编辑

#include <stdio.h>

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

可以说是每一句都看不懂了{:9_222:}

阿萨德按时 发表于 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,就是字符串的长度

个人理解 不对请大佬们指正

大马强 发表于 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!='\0');//c不等于0?
   
    printf("%d",i-1);//输出4-1=3
      
      return 0;
}

还有就是 i++是先执行语句再加一, 而++i是先加一再执行语句,如果换成了++i结果是3 - 2 = 1

我爱橙 发表于 2022-2-24 17:27:25

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

感谢前2条指教,后面i++还是有点绕,不过看下楼的懂了(。・ω・。)
页: [1]
查看完整版本: NO.147程序细节意义