c++程序猿经典面试题(2)
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%x 表示16进制整数类型输出。
promotions)。
c++程序猿经典面试题(2)的更多相关文章
- c++程序猿经典面试题
1.请问i的值会输出什么? #include"iostream.h" int i=1; void main() { int i=i; cout<<i<<en ...
- Java程序员经典面试题+答案(全)
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. 关注公众号[Java典籍]免费赠送一套Java入门视频教程一套! ...
- 黑马程序猿_7K面试题之交通灯系统
交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ① 异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...
- IOS-4-面试题1:黑马程序猿IOS面试题大全
一.多线程网络 1. 多线程的底层实现? 1> 首先搞清楚什么是线程.什么是多线程 2> Mach是第一个以多线程方式处理任务的系统.因此多线程的底层实现机制是基于Mach的线程 3> ...
- C语言程序猿必会的内存四区及经典面试题解析
前言: 为啥叫C语言程序猿必会呢?因为特别重要,学习C语言不知道内存分区,对很多问题你很难解释,如经典的:传值传地址,前者不能改变实参,后者可以,知道为什么?还有经典面试题如下: #include & ...
- JAVA程序猿面试题汇总
(此话题将不断更新,请留意) 第一,谈谈final, finally, finalize的差别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承.finally是异常 ...
- 各大IT公司校园招聘程序猿笔试、面试题集锦
转自:http://blog.csdn.net/hackbuteer1/article/details/7959921#t4 百度一面 1.给定一个字符串比如“abcdef”,要求写个函数编程“def ...
- Java程序猿面试题集(181- 199)
Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181. 182. 183. 184. 185. 186. 1 ...
- Java 13天基础 06天map集合小练习(黑马程序员) 统计字符串中每个字符出现的次数 (经典面试题)
import java.util.HashMap; import java.util.Map; import java.util.Scanner; /** * 目标 : 输出一个字符串中每个字符出现的 ...
随机推荐
- 03_HibernateSessionFactory源码分析
文章导读: 讲解了一个线程为什么要使用同一个connection, 我们分析了HiberatenSessionFactory的实现机制, 然后根据Hibernate的写法重构了我们的代码. 最后测试可 ...
- wordpress 使用wp_head()函数
wp_head()的作用: 在WordPress主题中使用此函数控制<head>…</head>之间的标签内容. 以通过header.php模板文件输出html中的head标签 ...
- 【USACO09FEB】 庙会班车 Fair Shuttle 贪心+线段树
Although Farmer John has no problems walking around the fair to collect prizes or see the shows, his ...
- 设计模式(一)单例模式:1-饿汉模式(Eager)
思想: 饿汉模式是最常提及的2种单例模式之一,其核心思想,是类持有一个自身的 instance 属性,并且在申明的同时立即初始化. 同时,类将自身的构造器权限设为 private,防止外部代码创建对象 ...
- kb-09-线段树--区间合并比较繁
/* hdu-1540 题意:一个线段,长度为n,三种操作,Dx,挖掉某个点:R,恢复最近被挖掉的点:Qx查询该点所在的连续区间的长度: 树的节点维护三个变量,该节点左边界开始连续的个数ll,右边界开 ...
- HDU-3729 I'm Telling the Truth
一个点集是学生,一个点集是排名.然后通过学生的排名范围连线,求此二分图的最大匹配. 本题还要求是最大字典序输出,那么由贪心可得,你让标号从大到小找增广边就行了. #include <cstdli ...
- LibreOJ2097 - 「CQOI2015」任务查询系统
Portal Description 给出\(n(n\leq10^5)\)个任务,和总时间范围\(m(m\leq10^5)\).每个任务有开始/结束时间\(s_i,e_i(1\leq s_i \leq ...
- NOIP2017赛前模拟1:总结
题目: 1.造盒子 题目描述 企鹅豆豆收到了面积为 K 的一块橡皮泥.但是他没有合适的盒子来装下这个橡皮泥.所以他打算造一个盒子. 制造台是有方形网格的平台,每个小正方形边长为 1 .现在豆豆有两类木 ...
- 刷题总结——骑士的旅行(bzoj4336 树链剖分套权值线段树)
题目: Description 在一片古老的土地上,有一个繁荣的文明. 这片大地几乎被森林覆盖,有N座城坐落其中.巧合的是,这N座城由恰好N-1条双 向道路连接起来,使得任意两座城都是连通的.也就是说 ...
- python object与dict互相转换
代码如下 # 将class转dict,以_开头的属性不要 def props(obj): pr = {} for name in dir(obj): value = getattr(obj, name ...