zoukankan      html  css  js  c++  java
  • 关于面试宝典中的各个问题(一)

    1、关于浮点数1.0f在内存中的表示:是3f800000.

    各个类型所占的字节数(byte),1byte=8bit

    char  1

    short 2

    bool 1

    int 4

    long 4

    float 4

    double 8

    long double 8

    char * 4

    int * 4

    float * 4

    以上是对于我的电脑,在典型的32位机上面的用VS2008的情况,64位机上会有不同。具体情况会因为电脑和编译器的原因而不同。参考资料《深入理解计算机系统》P28.

    2、整数提升 --来自《面试宝典》P37

    int _tmain(int argc, _TCHAR* argv[])
    {
    	unsigned char a=0xA5;
    	unsigned char b=~a>>5;
    	printf("b=%d",b);
    	getchar();
    	return 0;
    }
    

    结果是b=250,原因是整数提升,a取反后不是8Bit是16Bit,前面的0也变成了1.

    3、a,b交换问题

    先发一段求a,b中较大的一个的程序:

    	int a=5;
    	int b=3;
    	int c=a-b;
    	char *strs[2]={"a large","b large"};
    	c=unsigned(c)>>(sizeof(int)*8-1);
    
    	printf("%s",strs[c]);
    	getchar();
    	return 0;
    
    这个程序我觉得还比较有意思,另一种较简单的做法就是int max=((a+b)+abs(a-b))/2;

    再来说说ab交换的问题:

    用异或^比较好,因为不容易出现越界的问题,

    a=a^b;

    b=a^b;

    a=a^b;

    就可以了。

    4、这个问题是在处女面的时候被问到的问题:

    C和C++

    C++中调用被C编译器编译后的函数为什么要加extern "C"

    C++语言支持函数重载,而C不支持,所以extern c这个链接交换指定符号解决名字匹配问题。

    最后关于extern "C"等等,推荐一个网页

    http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html

    好啦,这部分程序设计的基本概念先告一段落~

  • 相关阅读:
    TensorFlow 简单实例
    $nextTick 宏任务 微任务 macrotasks microtasks
    FIS3 构建 工程化
    axios 请求参数配置说明
    js 垃圾回收机制与内存管理
    Async Await
    webpack 生命周期
    高阶函数 实现sum(2)(3) 柯里化
    JavaScript和JQuery的区别
    Javascript --常用技巧
  • 原文地址:https://www.cnblogs.com/liuliunumberone/p/2074528.html
Copyright © 2011-2022 走看看