姬世鹏 发表于 2019-11-27 23:24:10

同样代码在vs2010和dve中出现不同结果。

#include <stdio.h>
#include <string.h>
#define max 10

int main()
{
        int i,m;
        unsigned int ch;
        char array;

        printf("请随意输入一串数组:\n");
        for(i = 0;(array = getchar()) != '\n';i++);
               
       ch = strlen(array);\\同样的函数放在dve中可正常计算结果;但在vs2010中会进行求和而非求长度

        printf("%u\n",ch);
        for(i = 1;m = (i*i);i++)
        {
                if(ch > m)
                {printf("s\n");continue;}
                break;
        }
        i--;
        printf("%d",i);
}

ba21 发表于 2019-11-27 23:24:11

一段搞笑的代码

#define max 10 // 明明声明了10个元素

123456789 // 输入了 9 个元素

for(i = 0;(array = getchar()) != '\n';i++); // 接收了 123456789\n10个元素

char array; // 刚刚好存完 123456789\n

然后 strlen(array); 来测式字符串的长度(strlen所作的是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。)

姬世鹏 发表于 2019-11-28 13:13:14

ba21 发表于 2019-11-27 23:44
一段搞笑的代码

#define max 10 // 明明声明了10个元素


重要的是要添加'\0’,懂了
页: [1]
查看完整版本: 同样代码在vs2010和dve中出现不同结果。