C和C++程序员面试秘笈①

本文档基于《C和C++程序员面试秘笈》一书,涵盖了从位运算到标准头文件使用的多个面试题目,旨在帮助读者理解C/C++语言的基础及高级特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列博客基于董山海的<C和C++程序员面试秘笈>,旨在记录,欢迎交流,可联系 zywang@shu.edu.cn !


第一章:C/C++程序基础


1、面试题1

赋值语句:位运算与逻辑运算以及三元操作符的区别

2、面试题2

C++域操作符,注意全局变量和局部变量的区别

3、面试题3

+ + i ++i ++i:先 i i i 自增 1 1 1,然后再打印 i i i;
i + + i++ i++:先打印 i i i,再 i i i 自增 1 1 1;
− i − − -i-- i:先打印 − i -i i,再 i i i 自减 1 1 1;

4、面试题4

内建数据类型的时候, i + + i++ i++ + + i ++i ++i 效率没有区别;
自定义数据类型(比如类)的时候, + + i ++i ++i 效率比较高;

5、面试题5

有符号变量与无符号变量的值的转换

#include <stdio.h>  
//
char getChar (int x,int y)  {  
    char c;   
    unsigned int a = x;  
    (a+y > 10) ? (c = 1): (c = 2);  
    return c;  
}   
//
int main (void)  {  
    char c1 = getChar(7,4);  
    char c2 = getChar(7,3);  
    char c3 = getChar(7,-7);  
    char c4 = getChar(7,-8);  
    //
    printf("c1 = %d\n",c1);  
    printf("c2 = %d\n",c2);  
    printf("c3 = %d\n",c3);  
    printf("c4 = %d\n",c4);  
    //
    return 0;  
}  

输出结果为:
c 1 = 1 c1=1 c1=1 c 2 = 2 c2=2 c2=2 c 3 = 2 c3=2 c3=2 c 4 = 1 c4=1 c4=1
首先,C语言中提供了很多数据类型,比如整型 ( i n t ) (int) (int)等,它们的区别就是范围的大小,int代表是有符号的整数,可正可负可为0。所以基本数据类型划分为signed(有符号)和unsigned(无符号)两大类。

整数是以原码的形式存储的,而负数是以补码的形式存储的,原码大家都知道也就是它对应的二进制码,那什么是补码呢,就是原码的反码加1,反码就是原码的各位取反。

当一个有符号和一个无符号之间的数进行相加减会发生什么呢?
是这样的: a + b a+b a+b,首先把负数转换为无符号数,然后在进行运算。
b b b 转换为无符号数就是对 b b b 取模, 2 32 + b 2^{32}+b 232+b,结果为4294967286。

6、面试题6

不使用任何中间变量就将a、b值进行交换,推荐异或交换方式。

#include<bits/stdc++.h>
using namespace std;
//使用加减法完成交换
void swap1(int &a,int &b){
    a = a + b;
    b = a - b;
    a = a - b;
}
//使用局部变量进行交换
void swap2(int &a,int &b){
    int temp = a;
    a = b;
    b = temp;
}
//使用异或运算完成交换
void swap3(int &a,int &b){
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

7、面试题7

标准头文件中的一些通用结构

#ifndef _INCvxWorksh  //这边防止该头文件被重复引用,如果不存在,则定义
#define _INCvxWorksh

#ifdef _cplusplus  //这边表示使用的是C++编译器

extern "C"{  //c++编译器提供的与C连接交换指定的符号,解决C++与C名字匹配问题
#endif
/*...*/
#ifdef _cplusplus
}

#endif /* _INCvxWorksh */

8、面试题8

头文件引用中的 <> 与 " " 的区别

尖括号 <>:表示这个文件是一个工程或者标准头文件,查找过程会首先检查预定义的目录,我们可以通过设置搜索路径或者命令行来修改这些目录;

引号" ":表示该文件是用户提供的头文件,现在当前文件目录中寻找,然后在标准位置寻找文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值