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;

}

答案:

  1. (int )a 是把内存中单元的值从其它类型解析为int类型,并创建一个暂时对象。
  2.  
  3. (int &)a 是告诉c++内存中是一个int类型,并返回一个引用对象。
  1. (int&)a == static_cast<int&>(a)
  2. (int)&a == reinterpret_cast<int>(&a);
  3. (int&)a 不经过转换, 直接得到a在内存单元的值
  4. (int)a a在内存中的值转换成int类型
  5. float类型在内存中存储的形式是 ,符号位 指数 尾数
  6. 754标准:阶码採用增码(该数补码的反符号),尾数採用原码
  7. 所以1.0f 在内存中的形式为
  8. 0011 1111 1000 0000 0000 0000 0000 0000
  9. 所以输出的是 0x3f800000
  10. 0 在内存中的的存储形式
  11. 0000 0000 0000 0000 0000 0000 0000 0000
  12. (int&)a a强制转换成整形引用类型
  13. (int)&a a的地址强制转换成整型
  14. (int&)a 相当于
        *(int*)&a

  15. *(int*)(&a)

  16. *((int*)&a)

  17. float类型当成int类型来解释

  1. 3.以下函数的输出结果是?
  1. #include<iostream>
  2. using namespace std;
  3. int main(){
  4. unsigned int a = 0xFFFFFFF7;
  5. unsigned char i = (unsigned char)a;
  6. char* b = (char*)&a;
  7. printf("%08x,%08x", i, *b);
  8. getchar();
  9. }
  1. 答案:
  1. char *b=(char *)&a
  1. X86系列的机器中。数据的存储是“小端存储”,小端存储的意思就是。对于一个跨多个字节的数据,其低位存放在低地址单元,其高位放在高地址单元。
  2.  
  3. 比方一个 int 型的数据ox12345678,假如存放在0x00000000,0x00000001,0x00000002,0x00000003这四个内存单元中,那么ox00000000中放的是低位的ox78。而ox00000003中放的是高位的0x12,以此类推。
    有了以上的认识,我们能够继续分析上面的程序为什么输出fffffff7
  4. char* b = (char*)&a;这句话究竟干了什么事呢?事实上说来也简单。&a能够觉得是个指向 unsigned int类型数据的指针对吧。(char *)&a则把&a强制转换成 char *类型的指针,而且这个时候发生了截断。截断后,指针b仅仅指向oxf7这个数据,又因为指针b char *型的。属于有符号数。所以有符号数0xf7printf()的作用下输出fffffff7( 这个过程中事实上发生了參数类型提升default argument
  5. promotions)。
  6.  
  7.  
  8. %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. dubbo与zk注册中心如何对接,如何做到服务自动发现

    先看下consumer端发起调用时的链路流程: +---------------------------+ +---------------------------+ +--------------- ...

  2. 服务器迁移至Linux操作系统

    我在这里试了ubuntu.Debian,centos.最终还是选择了centos 使用工具putty,远程桌面的话使用vnc viewer(看起来service文件更改只需要替换user,但是路径不对 ...

  3. webapi同时支持post和get报404错误

    文章:webapi设置一个Action同时支持get和post请求 这篇文章,有提供方法.参数前加上[FromUri] [AcceptVerbs("GET", "POST ...

  4. poj 1734 Sightseeing trip判断最短长度的环

    Sightseeing trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5590   Accepted: 2151 ...

  5. 修改mysql数据的字符集校验规则使其区分大小写

    mysql 使用utf8字符集默认的校验规则collate为utf8_general_ci,不区分数据的大小写 测试如下 ::) character set utf8 collate utf8_bin ...

  6. JQUERY杂技

    JQUERY小技巧 this.value jsobject.val() #aaa:eq(2) 选择第三个id为aaa的元素 $("input")只选择input标签.如:<i ...

  7. 单线程实现并发——协程,gevent模块

    一 并发的本质 1 切换 2 保存状态 二 协程的概念 协程,又称微线程,纤程.英文名Coroutine.单线程下实现并发,用户从应用程序级别控制单线程下任务的切换,注意一定是遇到I/O才切. 协程的 ...

  8. poj 1418 Viva Confetti

    Viva Confetti Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1025   Accepted: 422 Desc ...

  9. 【CF659E】New Reform(图的联通,环)

    分析转载自http://blog.csdn.net/yukizzz/article/details/51029628 题意: 给定n个点和m条双向边,将双向边改为单向边,问无法到达的顶点最少有多少个? ...

  10. 如何在requirejs下引用bootstrap

    原本以为只要require过来就能用 require(['jquery','underscore','bootstrap','cache'],function($,U,B,C){ 但发现会报错,类似未 ...