C语言例题--数据的存储

    科技2022-07-11  97

    int main() { char a[1000] = {0}; int i=0; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0; }

    思考这段代码的输出结果

    解析: a是字符型数组,strlen找的是第一次出现尾零(即值为0)的位置。考虑到a[i]其实是字符型(占一个字节),如果要为0,则需要-1-i的低八位要是全0(即一个字节为0),也就是问题简化成了“寻找当-1-i的结果第一次出现低八位全部为0的情况时,i的值”(因为字符数组下标为i时第一次出现了尾零,则字符串长度就是i)。只看低八位的话,此时-1相当于255,所以i==255的时候,-1-i(255-255)的低八位全部都是0,也就是当i为255的时候,a[i]第一次为0,所以a[i]的长度就是255了。

    Processed: 0.011, SQL: 8