别认识我 发表于 2020-12-3 21:57:37

这个代码 什么意思?

#include<stdio.h>

main()
{
        int i;
        char c;
        for (i=0; (c=getchar())!='\n';i+=c);
        {
                printf("%c",c);
        }
}

风过无痕1989 发表于 2020-12-3 22:08:03

本帖最后由 风过无痕1989 于 2020-12-3 22:12 编辑


#include<stdio.h>

main()
{
      int i;
      char c;
      for (i=0; (c=getchar())!='\n';i+=c);    // 输入字符,直到接收到回车键为止
      {
                printf("%c",c);   // 输出接收到的字符
      }
}

i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

别认识我 发表于 2020-12-3 22:14:03

风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

emmm,小甲鱼视频上面是 i+=c

昨非 发表于 2020-12-3 22:15:51

风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

有点儿奇怪,直接加ASCII码强制转换为整型好像也说得过去

风过无痕1989 发表于 2020-12-3 22:22:55

昨非 发表于 2020-12-3 22:15
有点儿奇怪,直接加ASCII码强制转换为整型好像也说得过去

我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

昨非 发表于 2020-12-3 22:23:47

风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

没注意过这个细节

永恒的蓝色梦想 发表于 2020-12-3 23:23:26

风过无痕1989 发表于 2020-12-3 22:08
i+=c ?是 i++ 吧?若真是 i+=c 这个程序就有些问题了,需要运行进行验证,到底输出了什么

i+=c 和 i++ 没有任何区别,因为 i 根本没用。

永恒的蓝色梦想 发表于 2020-12-3 23:24:03

风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

不是很明白你说的是什么意思

风过无痕1989 发表于 2020-12-3 23:48:02

永恒的蓝色梦想 发表于 2020-12-3 23:24
不是很明白你说的是什么意思

#include<stdio.h>
int main()
{
      int i, j, c;
      char s = { "8980","9198" };

      for (i = 3;i >= 0;i--)
      {
                c = s + s - 2 * '0';
                s = c % 10 + '\0';
      }
      for (i = 0;i <= 1;i++)
      {
                puts(s);
      }
      printf("\n");
      
      for (i = 0;i < 2;i++)             // 输出 s 数组
      {
                for (j = 0;j < 4;j++)
                {
                        printf("%.2d ", s);
                }
                printf("\n");
      }
      return 0;
}

*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时
    c = s + s - 2 * '0'
       = 0 + 8 - 2 * '0'
       = 8 - 2 * '0'
       = 8
               
    s = c % 10 + '\0'
            = 8 % 10 + '\0'
            = 8

i = 2 时
    c = s + s - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7

i = 1 时
    c = s + s - 2 * '0'
       = 9 + 1 - 2 * '0'
       = 10 - 2 * '0'
       = 10
               
    s = c % 10 + '\0'
            = 10 % 10 + '\0'
            = 0

i = 0 时
    c = s + s - 2 * '0'
       = 8 + 9 - 2 * '0'
       = 17 - 2 * '0'
       = 17
               
    s = c % 10 + '\0'
            = 17 % 10 + '\0'
            = 7
运行结果:

9198

07 00 07 08
57 49 57 56          <- - - - - -   9 0 9 8 的 ASCII码
Press any key to continue . . .

永恒的蓝色梦想 发表于 2020-12-4 20:39:37

风过无痕1989 发表于 2020-12-3 23:48
*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时


错误解释。把题目发出来

风过无痕1989 发表于 2020-12-4 20:44:42

本帖最后由 风过无痕1989 于 2020-12-4 20:46 编辑

永恒的蓝色梦想 发表于 2020-12-4 20:39
错误解释。把题目发出来

早上就在上边呀。人家问的是 '0' 的值是多少

永恒的蓝色梦想 发表于 2020-12-4 21:16:00

风过无痕1989 发表于 2020-12-3 23:48
*************************************************
运行过程(字符 0 没有参与运算):
i = 3 时


你可真是草率啊,i = 3 时
    c = s + s - 2 * '0'
       = '0' + '8' - 2 * '0'
       = '0' - '0' + '8' - '0'
       = ('0' - '0') + ('8' - '0')
       = 0 + 8
       = 8

永恒的蓝色梦想 发表于 2020-12-4 21:26:16

风过无痕1989 发表于 2020-12-3 22:22
我前两天回答过一题目,ASCII 是不能参与整型的运算的(通过运行得出的结论)

至于“通过运行得出的结论”,我希望你在发表之前可以先思考一下。

风过无痕1989 发表于 2020-12-4 21:38:38

永恒的蓝色梦想 发表于 2020-12-4 21:26
至于“通过运行得出的结论”,我希望你在发表之前可以先思考一下。

有什么问题,你指出来,我学习一下

我回答问题之前,都是通过运行程序的,按程序运行说话,不敢草率。没有经过软件运行的程序,我也从不说话。怕误人子弟

永恒的蓝色梦想 发表于 2020-12-4 21:43:02

风过无痕1989 发表于 2020-12-4 21:38
有什么问题,你指出来,我学习一下

我回答问题之前,都是通过运行程序的,按程序运行说话,不敢草率。 ...

看看你9楼发的解释。

风过无痕1989 发表于 2020-12-4 22:18:23

永恒的蓝色梦想 发表于 2020-12-4 21:43
看看你9楼发的解释。

那个解释有什么问题?软件一步一步是那么运行的,你可以试试,看是不是那样的

永恒的蓝色梦想 发表于 2020-12-4 22:20:32

风过无痕1989 发表于 2020-12-4 22:18
那个解释有什么问题?软件一步一步是那么运行的,你可以试试,看是不是那样的

不是,你可以看一下12楼。
至于“ASCII 是不能参与整型的运算的”,这个一听就是错的。

风过无痕1989 发表于 2020-12-4 22:50:35

永恒的蓝色梦想 发表于 2020-12-4 22:20
不是,你可以看一下12楼。
至于“ASCII 是不能参与整型的运算的”,这个一听就是错的。

学习了,被 0 给骗了
页: [1]
查看完整版本: 这个代码 什么意思?