`
luckyclouds
  • 浏览: 111482 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C语言基础问题可当面试题

    博客分类:
  • c
 
阅读更多
int main()
{
   char a[1000];
   int i;
   for(i=0; i<1000; i++)
   {
      a[i] = -1-i;
   }
   printf("%d",strlen(a));
   return 0;
}

此题看上去真的很简单,但是却鲜有人答对。答案是255

for 循环内,当i 的值为0 时,a[0]的值为-1。关键就是-1 在内存里面如何存储。

我们知道在计算机系统中,数值一律用补码来表示(存储)。主要原因是使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。正数的补码与其原码一致;负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后整个数加1。

按照负数补码的规则,可以知道-1 的补码为0xff,-2 的补码为0xfe……当i 的值为127时,a[127]的值为-128,而-128 是char 类型数据能表示的最小的负数。当i 继续增加,a[128]的值肯定不能是-129。因为这时候发生了溢出,-129 需要9 位才能存储下来,而char 类型数据只有8 位,所以最高位被丢弃。剩下的8 位是原来9 位补码的低8 位的值,即0x7f。

当i 继续增加到255 的时候,-256 的补码的低8 位为0。然后当i 增加到256 时,-257 的补码的低8 位全为1,即低八位的补码为0xff,如此又开始一轮新的循环……

按照上面的分析,a[0]到a[254]里面的值都不为0,而a[255]的值为0。strlen 函数是计算字符串长度的,并不包含字符串最后的‘\0’。而判断一个字符串是否结束的标志就是看是否遇到‘\0’。如果遇到‘\0’,则认为本字符串结束。

分析到这里,strlen(a)的值为255 应该完全能理解了。这个问题的关键就是要明白char类型默认情况下是有符号的,其表示的值的范围为[-128,127],超出这个范围的值会产生溢出。另外还要清楚的就是负数的补码怎么表示。弄明白了这两点,这个问题其实就很简单了
分享到:
评论

相关推荐

    c语言 面试题 与c语言有关的面试题 华为笔试题

    c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关的面试题 华为笔试题 c语言 面试题 与c语言有关...

    C语言基础练习面试题

    本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...

    c语言和c++语言面试题,软件工程师面试题

    c语言和c++语言面试题,软件工程师面试题

    C语言面试题C语言面试题.doc

    C语言面试题C语言面试题

    华为C语言面试题(面试题)

    虽然题目本身没有给出具体的面试题内容,但从以上知识点中可以推测,华为C语言面试可能会包括但不限于以下几个方面的问题: - 实现一个简单的递归函数,如计算阶乘或斐波那契数列。 - 编写一个程序来演示指针与数组...

    C语言笔试题程序员面试题大集合

    本资料集"程序员面试题大集合"专注于C语言的笔试题,旨在帮助求职者在企业面试和笔试中脱颖而出。 首先,我们要理解C语言的基础知识。C语言是一种结构化编程语言,它提供了丰富的控制语句,如if-else、switch-case...

    c语言经典全面面试题

    《C语言经典全面面试题》是一本集合了众多C语言面试常见问题的资源,对于学习者和求职者来说,无疑是提升C语言技能和面试准备的重要参考资料。C语言作为计算机科学的基础,其面试题通常涵盖了语法、内存管理、指针...

    16道C语言面试题(搞程序的面试的一定要看的题)

    这里需要注意的是,在宏定义中正确地使用括号至关重要,因为这样可以避免宏展开时可能出现的操作符优先级问题。 ### 循环结构 #### 3. 无限循环 无限循环是程序设计中常见的结构之一。题目中提到了两种常用的无限...

    经典C语言面试题.7z

    经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z经典C语言面试题.7z...

    C语言面试题大汇总_C语言,面试题,汇总3.PDF

    C语言面试题大汇总_C语言,面试题,汇总2.PDF C语言面试题大汇总_C语言,面试题,汇总2.PDF C语言面试题大汇总_C语言,面试题,汇总2.PDF C语言面试题大汇总_C语言,面试题,汇总2.PDF

    程序员面试基础知识 常见c语言面试题

    这是一本关于c c++程序员面试的电子书 里面包含了程序员面试基础知识 常见c语言面试题 程序员面试技巧 华为面试题 百度面试题 金山面试题 腾讯面试题 中兴面试题 google面试题 绝对是经典

    应聘C语言类工作职位面试题大汇总

    在准备应聘C语言类工作职位时,面试题的熟悉程度往往是决定成败的关键因素。通过这份“应聘C语言类工作职位面试题大汇总”,你可以深入了解软件公司在笔试过程中对C语言技能的考察方式。C语言作为基础且强大的编程...

    C语言面试笔试题,经典题目

    文档包含C语言,简答(包含一些面试高概率问题)、程序分析题(包含编程中常见错误现象,内存越界,非法操作,段错误分析等)、编程题(30道编程题,涵盖了面试常见题型,以及C语言经典程序)。学习,检测,准备面试,都是...

    常见C++面试题汇总(最全c语言面试题)

    常见C++面试题汇总(最全c语言面试题) 所包含文件: 1、华为C++内部培训材料 2、130道面试题.doc 3、C++试题.htm 4、C-C++ 程序设计员应聘常见面试试题深入剖析.mht 5、C语言面试题大汇总之华为面试题.txt 6、C语言...

    C语言面试100题(含答案)

    C语言面试100题(含答案)。 例题1: /* 下列给定程序的功能是:读入一个整数k(2=),打印它的所有质因子(即所有素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。 请改正程序中的错误,使程序能...

    嵌入式C语言面试题汇总(超经典).pdf

    我们在找嵌入式方面的工作时,让我们头疼的恐怕就是面试题了,因为我们摸不到企业的命题规律,也不知道该怎样去准备,今天将各大企业的面试题进行汇总,分享给大家,希望可以帮到各位小伙伴。加油哦!

    面试c语言题目

    C语言面试题目总结 根据提供的文件信息,总结了以下几个C语言面试题目,涵盖了多态、函数注册、字符串处理、算法设计等方面的知识点。 1. 多态类中的虚函数表是 Compile-Time,还是 Run-Time 时建立的? 答案:...

    c语言面试题集(单片机)

    C语言面试题集针对单片机的考察涵盖了多个核心知识点,包括预处理器、死循环、数据声明、关键字Static、Const和Volatile、位操作、内存访问、中断、动态内存分配、Typedef以及一些复杂的语法。以下是对这些知识点的...

    C语言常见的100面试题含答案.rar

    下面,我们将根据提供的“C语言常见的100面试题含答案.rar”资源,探讨一些关键的C语言知识点。 1. **基本语法**:面试中常常会涉及到C语言的基础语法,如变量定义、数据类型、运算符优先级、流程控制语句(如if-...

Global site tag (gtag.js) - Google Analytics