• [原创] 程序员面试宝典:第五章 程序设计基本概念


    1. 统计x转化为2进制后1的个数

    int count = 0;
    while(x)
    {
        count++;
        x = x&(x-1)
    }
     
    2. 逻辑表达式的短路效应,仅限于各个逻辑分式。(?)
     
    3. printf 参数是从右向左压栈的,先计算最右边的表达式
    • 如:printf("%d %d", *ptr, *(++ptr)), 先计算++prt
    4. 两种不同的强制转换
    • (int &)a, 将a变量的地址开始的 sizeof(int) 个字节按照 int 取出。(a本身存储的是数据)
    • (int)a, 将a变量的内容强制转换为int型后,取出,a变量本身并没有被改变。
    • 强制类型转换会发生字节截断:unsigned char b = (unsigned char) a;
    • 强制转换指针类型,不会对数据造成影响:unsigned char * b = (unsigned char *) &a;
    5. 默认类型转换原则:
    • 转换为表达式中最宽类型
    • 转换为程序“暗示出”的类型(参数类型、返回值类型)
    • 若表达式中所有元素均为整型(short,int),则统一转换为int
    6. 运算优先级:
    • 从属性操作和括号
    • 取非、取反、自增
    • 取地址,取内容
    • 算术运算
    • 移位运算,比较
    • 位运算,逻辑运算
    • 各类赋值
     
    7. 内存对齐原则:
    • 起始地址为最大基本类型成员大小的整数倍(一般不用考虑,认为从0开始)
    • 各个基本类型成员起始地址为自己长度的整数倍
    • 整个结构体长度为最大基本成员长度的整数倍
    • 结构体嵌套时,拆分为基本成员进行处理
    • 1,3规则为windows规则,在linux系统下,均为4
    • #progma pack(int), 可设置整体对其基准
    • class中,仅包含非static变量(static 存储在数据区)
    • 当存在位域时候的对齐原则:
      • 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止;
      • 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍;(经测试此条好像仅限于char型,整型可以跨域存储) 
      • 如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采取不压缩方式,Dev-C++采取压缩方式;
      • 如果位域字段之间穿插着非位域字段,则不进行压缩;
      • 整个结构体的总大小依然为最宽基本类型成员大小的整数倍
    8. 基础类型大小:
            char、bool        short        long、int        float            long long、double
                    1                    2                4                    4                        8
     
    9. 内存结构:
    • 栈:局部变量、参数传递、函数调用
    • 堆:动态分配
    • 数据区:全局、静态、常量
    • 代码区:代码
     
    10. 运算符问题:
    • 判断是否为2的次方:减1相与,为0则是2的次方
    • x&y:位与,x,y相同位的一半
    • x|y: 位或
    • x^y: 异或,异则相或,取x和y的不同位
    • 取出a、b中较大的:    ( (a+b) + abs(a-b) ) / 2
    • 交换a,b: a = a^b, b = a^b, a = a^b
    11. extern "c":C++支持重载,重载函数编译后会加上一些内容使得编译后的名称不同
     
  • 相关阅读:
    各大高校OJ网站
    项目中调试SQLServer 方便的查看SQL语句的执行时间的方法
    一个联合查询的优化,排行榜排名
    IEdevelopToolbar ie浏览器的css代码调试工具
    SQL Server 2016/2014/2012/2008/2005/2000简体中文企业版下载地址
    sql server 数据库学习
    增加路由ip
    HTTP Error 500.0
    远程的一些知识
    Windows内置系统账户:Local system/Network service/Local Service 区别
  • 原文地址:https://www.cnblogs.com/icemoon1987/p/2709567.html
Copyright © 2020-2023  润新知