学生来看这8道C语言谜题你能答对几个

 我来答
阿阳畅心声
情感倾听者

2023-06-05 · 专注挽回感情
知道大有可为答主
回答量:9428
采纳率:98%
帮助的人:120万
展开全部

C语言8个语言谜题答对几个

1、下面的程序并不见得会输出"hello-std-out"你知道为什么吗?

参考答案:stdout和stderr是不同设备描述符。stdout是块设备,stderr则不是。对于块设备,只有当下面几种情况下才会被输入:遇到回车; 缓冲区满;flush被调用。而stderr则不会。

2、下面的程序看起来是正常的,使用了一个逗号表达式来做初始化。可惜这段程序是有问题的。你知道为什么吗?

参考答案:这个程序会得到编译出错(语法出错)。逗号表达式是没错可是在初始化和变量声明时,逗号并不是逗号表达式的意义。这点要区分,要修改上面这个程序,你需要加上括号:"int a=(1,2);"。

3、下面的程序会有什么样的输出呢?

参考答案:程序会输出4321,你知道为什么吗?要知道为什么,你需要知道printf的返回值是什么。printf返回值是输出的字符个数。

4、下面的程序会输出什么?

参考答案:该项程序输出:"0121095237632"。原因是:浮点数是4个字节,12.5f转成二进制是:

01000001010010000000000000000000,十六进制是:0x41480000,十进制是:1095237632。所以,第二和第三个输出相信大家也知道是为什么了。

5、下面,我们再来看一个交叉编译的事情,下面的两个文件可以编译通过吗? 如果可以通过,结果是什么?

参考答案:该程序可以编译通过,但运行时会出错。为什么呢? 原因是在另一个文件中用 extern int *arr来外部声明一个数组并不能得到实际的期望值,因为他们的类型并不匹配。所以导致指针实际并没有指向那个数组。

6、请问下面的程序会有什么潜在的危险?

参考答案:本题很简单了。这个程序的潜在问题是,如果用户输入了超过80个长度的字符,那么就会有数组越界的问题了,你的程序很有可能会crash了。

7、请问下面的程序输出是什么?(绝对不是10)

参考答案:本题输出的是100。为什么呢?问题就出在"y = y/*p;"上了我们本来想的是"y /(*p)”,然而,我们没有加入空格和括号,结果"y/*p“中的"/*"被解释成了注释的开始。于是,这也是整个恶梦的开始。

8、下面的输出是什么?

参考答案:本题并不简单的是考前缀++或反缀++,本题主要考的是&&和|1的短路求值的问题。

所谓短路求值:对于(条件1 && 条件2),如果“条件1”是false,那“条件2”的表达式会被忽略了。对于(条件1条件2),如果“条件1”为true,而“条件2”的表达式则被忽略了



已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式