前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言经典笔试题

C语言经典笔试题

作者头像
编程范 源代码公司
发布2018-04-16 13:07:43
2K0
发布2018-04-16 13:07:43
举报
文章被收录于专栏: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\n",*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

C语言(clang.cc)研究中心

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程范 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档