1.以下程序的输出结果是?

#include<stdio.h>

main(){

int b=3;

int arr[]={6,7,8,9,10};

int *ptr=arr;

*(ptr++)+=123;

printf("%d,%d\n",*ptr,*(++ptr));

}

答案:

8,8

c中printf计算參数时是从右到左压栈的。

2.以下程序的输出结果?

#include<iostream>

using namespace std;

int main(){

float a = 1.0f;

cout << (int)a << endl;

cout << &a << endl;

cout << (int&)a << endl;

cout << "boolalpha" << ((int)a == (int&)a) << endl;

cout << endl;

cout << endl;

float b = 0.0;

cout << (int)b << endl;

cout << &b << endl;

cout << (int&)b << endl;

cout << "boolalpha" << ((int)b == (int&)b) << endl;

getchar();

return 0;

}

答案:

(int )a 是把内存中单元的值从其它类型解析为int类型,并创建一个暂时对象。

(int &)a 是告诉c++内存中是一个int类型,并返回一个引用对象。
(int&)a == static_cast<int&>(a)
(int)&a == reinterpret_cast<int>(&a);
(int&)a 不经过转换, 直接得到a在内存单元的值
(int)a a在内存中的值转换成int类型 float类型在内存中存储的形式是 ,符号位 指数 尾数
由754标准:阶码採用增码(该数补码的反符号),尾数採用原码
所以1.0f 在内存中的形式为
0011 1111 1000 0000 0000 0000 0000 0000
所以输出的是 0x3f800000
0 在内存中的的存储形式
0000 0000 0000 0000 0000 0000 0000 0000
(int&)a 把a强制转换成整形引用类型
(int)&a 把a的地址强制转换成整型

(int&)a 相当于
    *(int*)&a

*(int*)(&a)

*((int*)&a)

把float类型当成int类型来解释

3.以下函数的输出结果是?
#include<iostream>
using namespace std;
int main(){
unsigned int a = 0xFFFFFFF7;
unsigned char i = (unsigned char)a;
char* b = (char*)&a;
printf("%08x,%08x", i, *b);
getchar();
}
答案:

char *b=(char *)&a
在X86系列的机器中。数据的存储是“小端存储”,小端存储的意思就是。对于一个跨多个字节的数据,其低位存放在低地址单元,其高位放在高地址单元。

比方一个 int 型的数据ox12345678,假如存放在0x00000000,0x00000001,0x00000002,0x00000003这四个内存单元中,那么ox00000000中放的是低位的ox78。而ox00000003中放的是高位的0x12,以此类推。
有了以上的认识,我们能够继续分析上面的程序为什么输出fffffff7:
char* b = (char*)&a;这句话究竟干了什么事呢?事实上说来也简单。&a能够觉得是个指向 unsigned int类型数据的指针对吧。(char *)&a则把&a强制转换成 char *类型的指针,而且这个时候发生了截断。截断后,指针b仅仅指向oxf7这个数据,又因为指针b是 char *型的。属于有符号数。所以有符号数0xf7在printf()的作用下输出fffffff7( 这个过程中事实上发生了參数类型提升default argument
promotions)。
%x 表示16进制整数类型输出。

c++程序猿经典面试题(2)的更多相关文章

  1. c++程序猿经典面试题

    1.请问i的值会输出什么? #include"iostream.h" int i=1; void main() { int i=i; cout<<i<<en ...

  2. Java程序员经典面试题+答案(全)

    这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. 关注公众号[Java典籍]免费赠送一套Java入门视频教程一套! ...

  3. 黑马程序猿_7K面试题之交通灯系统

    交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ①      异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...

  4. IOS-4-面试题1:黑马程序猿IOS面试题大全

    一.多线程网络 1. 多线程的底层实现? 1> 首先搞清楚什么是线程.什么是多线程 2> Mach是第一个以多线程方式处理任务的系统.因此多线程的底层实现机制是基于Mach的线程 3> ...

  5. C语言程序猿必会的内存四区及经典面试题解析

    前言: 为啥叫C语言程序猿必会呢?因为特别重要,学习C语言不知道内存分区,对很多问题你很难解释,如经典的:传值传地址,前者不能改变实参,后者可以,知道为什么?还有经典面试题如下: #include & ...

  6. JAVA程序猿面试题汇总

    (此话题将不断更新,请留意) 第一,谈谈final, finally, finalize的差别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常 ...

  7. 各大IT公司校园招聘程序猿笔试、面试题集锦

    转自:http://blog.csdn.net/hackbuteer1/article/details/7959921#t4 百度一面 1.给定一个字符串比如“abcdef”,要求写个函数编程“def ...

  8. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  9. Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)

    import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...

随机推荐

  1. Spring core resourc层结构体系及JDK与Spring对classpath中资源的获取方式及结果对比

    1. Spring core resourc层结构体系 1.1. Resource相关结构体系 1.2. ResourceLoader相关体系 2. JDK与Spring对classpath中资源的获 ...

  2. Selenium 报错:Element is not clickable at point

    WebDriverException: unknown error: Element <td class="grid - select - input " stype=&qu ...

  3. 04-python进阶-map&reduce

    Map --映射 Reduce -- 归纳 将大数据标准化的处理 Map 拆封任务,Reduce将结果合并 这样是不是能够将很多计算机组成一台超级计算机呢? 一些问题:如果任务本身就很复杂,那么拆解任 ...

  4. spring scope 属性的取值

    Spring 容器是通过单例模式创建 Bean 对象的,也就是说,默认情况下,通过调用 ac.getBean("mybean")方法获得的对象都是同一个 mybean 对象 使用单 ...

  5. 微软工具Sysinternals Suite

    工具:Sysinternals Suite 一个可以看进程的工具.

  6. java2 实用教程第四章

    博主原创 转载请注明地址 博客:http://www.cnblogs.com/13224ACMer/ 1成员变量 声明变量所声明的变量被称为成员变量和域变量,成员变量在类中的书写位置与前后顺序无关, ...

  7. Golang遇到的问题记录

    1,windows cmd 结束输入问题 func main() { counts := make(map[string]int) countLines(os.Stdin, counts) fmt.P ...

  8. [AtCoderContest015D]A or...or B Problem

    [AtCoderContest015D]A or...or B Problem 试题描述 Nukes has an integer that can be represented as the bit ...

  9. BZOJ 4552 [Tjoi2016&Heoi2016]排序 ——线段树 二分答案

    听说是BC原题. 好题,二分答案变成01序列,就可以方便的用线段树维护了. 然后就是区间查询和覆盖了. #include <map> #include <cmath> #inc ...

  10. [luoguP3231] [HNOI2013]消毒(最小点覆盖 + 状压)

    传送门 考虑贪心,控制某一维为1,另两位最大是最优的,也就是一次选一个厚度为1的面 那么对于每个点,可以有3种面是可以选到它的 然后gg 考虑二维的状态,一个平面,有些点,一次选一行或一列最优 那么每 ...