C/C++笔试题目

1. C语言中无符号数与有符号数html

unsigned int a = 6;
int b = -20;
printf("a+b = %d\n",a+b);            #输出-14
printf("a+b %s \n",(a+b)>0 ? "> 0":" < 0");    #输出a+b > 0

有符号数和无符号数在进行比较运算时(==,>=,<=,>,<),有符号数隐式的转换成无符号数。上述中,a+b的值为-14(1111_1111_1111_0010),可是a+b 比较时,隐式转换成无符号数,所以输出为>0面试

记住一点:-1为有符号整型数据,常量数值在整形范围内,均为int类型,若是为正数或0,则做为无符号int,不然为有符号int。比较运算符两边的数据类型会在编译器的帮助下,自动统一的。算法

再记住一点:C语言规定是从取值范围小的往大的提高,char—>unsigned char—>short—>unsigned short—>int--->unsinged int—>long—>unsigned long –>long long ---> unsigned long long 数组

2. 函数不能反悔栈内存的指针,能够返回堆内存的指针。对于空指针,连续两次free,不会出错。对于非空指针,连续两次free,会出错。函数

int *a1;
    a1 = (int*)malloc(10);
    a1[0]=10;
    printf("a1:%p a1[0]:%d \n",a1,a1[0]);     //输出a1:0x85c9008 a1[0]:10
    free(a1);
    //free(a1);            //加上这句会报错
    printf("a1:%p a1[0]:%d \n",a1,a1[0]);    //输出a1:0x85c9008 a1[0]:0

根据输出能够得知,free后,a1的指向的地址值没有改变,可是这块地址所表明的空间已是无效空间了,不能使用。为了防止这种状况,free后的,应该设置a1= NULL; 这样,防止后面的代码对a1的空间误操做。测试

3. 引用与指针有什么区别?ui

    引用必须初始化,指针不须要。spa

    引用初始化以后不能被改变,指针能够改变所指的对象。.net

    不存在指向空值的引用,可是存在指向空值的指针unix

4.C语言算法题目(一)

   C语言算法题目(二)

  IT公司笔试题目 IT公司笔试题目2 IT公司笔试题目3  IT公司笔试题目4

C语言基本函数构造

IT公司智力测试题目

面试中常常出现的算法

关于数组的几道面试题

相关文章
相关标签/搜索