这些是 C/C++ 能做的
服务器开发工程师, 人工智能, 云计算工程师, 信息安全 (黑客反黑客), 大数据 , 数据平台, 嵌入式工程师, 流媒体服务器, 数据控解, 图像处理, 音频视频开发工程师, 游戏服务器, 分布式系统, 游戏辅助等
C 语言是面向过程的, 而 C++是面向对象的
小编推荐一个学 C 语言 / C++ 的学习裙 [ 二六三, 六八八, 二七六 ] , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
1. 以下程序的结果是什么?
A: main() 函数里的 i 是一个未定义值
B: main() 函数的 i 为 1
C: 编译器不允许这种写法
D: main() 里 i 的值为 0
解答: 当笔试者看到此代码时, 可能会觉得古怪. 虽然在 C++ 中编译是可以通过的 (显然是不合理). 当 main() 函数里的 i 从定义开始, 外部的全局变量 i 就已经被屏蔽掉, 所以 main() 函数里作为右值的 i 的值不会 0 也不会是 1, 与外部的 i 无关. 而是一个未定义的符号.
答案: A
2. 以下程序的输出结果是什么?
A:13 13
B:112 13
C :12 12
D:12 13
解析: 本题主要考察指针以及栈的概念 .ptr 首先指向数组 arr 的第一个元素,*(ptr++) += 100 之后, arr 中的 0 号元素即 a[0] 变成了 111, 别忘了 ptr 也向后挪了一位即指向 1 号元素, 此时 * ptr 的值为 12. 问题来了: printf("%d %d",*ptr,*(++ptr)) 的输出结果竟然不是 12 13 而是 13 13 原因在于 printf 的两个参数压栈顺序为从右至左, 故也先计算 *(++ptr), 所以 ptr 已经指向了 arr[2], 所以两次都是 13
答案: A
3. 以下代码说法正确的是:
A: 一定输出 - 120
B: 一定不能输出 - 120
C: 可能输出 - 120
D: 输出 %d
解答: 本题乍一看,-120 木有问题! 再仔细一看 char 类型表示的数据范围是 - 128~127, 也没有溢出. 应该没错咯. 但本题考查的重点并非在此. 重点在于 aInt = aChar = -120; 这句话, 为什么呢? 我们知道 = 号的意思是赋值, 是从右往左运算, 那第一步会将 - 120 赋给 aChar. 第二步是 aChar 的值给 aInt. 对于第一步没有什么要说的. 第二步呢就有个问题了. 以 32 位系统常规平台来看, 是将 8 字节数据的 char 类型变量放到 32 个字节的 int 变量里去, 那这里就存在一个问题了! 没错, 那就是大小端存储导致的问题, 即 - 120 这个数字对应的八个位的二进制码是放到 int 变量的高位还是低位, 所以结果自然不必多说了.
答案: C
来源: http://www.jianshu.com/p/d422e82c02fe