0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言笔试题

学益得智能硬件 来源:学益得智能硬件 2024-12-30 09:48 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来看一个C语言笔试题,应该很少有人能给出正确答案。

#include 


int f(){
    printf("this is f ...
"); return 1;
}


int g(){
    printf("this is g ...
"); return 2;
}


int main()
{
    printf("%d %d
", f(), g());


    return 0;
}

代码很简单,函数 f 输出一个字符串,返回整数 1。

函数 g 输出一个字符串,返回整数 2。

主函数中用 printf 输出两个函数的函数值,后面的参数一个是函数 f,一个是函数 g。

运行程序应该会有三行输出,两个函数输出两个,主函数中再打印两个数字。

问题是,这三个输出的顺序应该是什么样的?有没有同学能看出答案,可以写在评论区。

运行程序,先打印 g,再打印 f,最后输出 1 2。

这个结果确实耐人寻味,先调用了函数 g,然后再调用函数 f,写在前面的反而最后调用。

不过这还没结束,再来换个 ARM 平台。

相同的代码,这次却先输出 f,再输出 g,顺序和参数的顺序一致。

好像已经看出了结果,调用的顺序不一定,得看编译器。

最后,再来看下C语言官方文档,确实提到了这一点,函数参数的计算顺序属于为指定行为。

之所以未指定,是想让编译器充分利用自身架构的特点,所以在写代码的时候,不要依赖他们的计算顺序。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    183

    文章

    7649

    浏览量

    146340
  • 代码
    +关注

    关注

    30

    文章

    4981

    浏览量

    74505

原文标题:又一个无解笔试题

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式春招笔试高频算法题(附解题思路)

    的应届生、新手打造,整理了5道嵌入式春招笔试高频算法题,覆盖数组、链表、字符串、进制转换等核心考点,每道题都附上“题干+解题思路+C语言代码实现”,贴合嵌入式笔试场景,可直接复制练习,
    发表于 03-18 10:08

    C语言安全编码指南:MISRA C、CERT C、CWE 与 C Secure 标准对比与Perforce QAC应用详解

    如何编写真正安全的C语言代码?指南涵盖MISRA C、CERT、CWE等国际安全编码标准对比,以及如何借助Perforce QAC自动检测漏洞。推荐给嵌入式/汽车/工业软件的开发者!
    的头像 发表于 01-26 17:38 1208次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>安全编码指南:MISRA <b class='flag-5'>C</b>、CERT <b class='flag-5'>C</b>、CWE 与 <b class='flag-5'>C</b> Secure 标准对比与Perforce QAC应用详解

    C语言主要特点

    C语言的主要特点有: 1.语言简洁、紧凑,使用方便、灵活 。C语言一共只有32个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示,
    发表于 01-05 07:41

    汽车网络安全开发语言选型指南:C/C++/Rust/Java等主流语言对比+Perforce QAC/Klocwork工具支持

    汽车网络安全如何选编程语言CC++、Rust、Java……谁更适合AUTOSAR、ISO/SAE 21434?一文了解8种主流语言的优劣与适用场景,以及Perforce QAC/K
    的头像 发表于 12-26 11:13 726次阅读
    汽车网络安全开发<b class='flag-5'>语言</b>选型指南:<b class='flag-5'>C</b>/<b class='flag-5'>C</b>++/Rust/Java等主流<b class='flag-5'>语言</b>对比+Perforce QAC/Klocwork工具支持

    C语言C++的区别及联系

    C语言C++到底是什么关系? 首先C++和C语言本来就是两种不同的编程
    发表于 12-24 07:23

    C语言中可以嵌套汇编语言吗?

    请问C语言中可以嵌套汇编语言吗?
    发表于 12-15 08:14

    C语言C++之间的区别是什么

    区别 1、面向对象编程 (OOP): C语言是一种面向过程的语言,它强调的是通过函数将任务分解为一系列步骤进行执行。 C++在C
    发表于 12-11 06:23

    C语言的分支结构介绍

    1.简单if语句 C语言中的分支结构语句中的if条件语句。 简单if语句的基本结构如下: 代码语言:javascript if(表达式) { 执行代码块; } 其语义是:如果表达式的值为真,则执行其后的语句,否则不执
    发表于 11-25 07:48

    C语言特性

    1、高效性:直接操作硬件 C 语言代码的执行效率极高,这是其最为显著的优势之一。它能够直接访问硬件资源,与底层硬件进行紧密交互,充分发挥硬件的性能潜力。在嵌入式开发中,硬件资源往往十分有限,对程序
    发表于 11-24 07:01

    C语言和单片机C语言有什么差异

    单片机c语言相对于普通C语言增加了一些基本的指令,还有变量的赋值是16进制,当然单片机c语言只牵
    发表于 11-14 07:55

    MiniVC6(C语言快速部署)资料

    MiniVC6(C语言快速部署)软件,无需安装。
    发表于 09-04 16:59 0次下载

    常见电子类硬件笔试题整理(含答案)

    violation,画图说明,并说明解决办法。(威盛VIA2003.11.06上海笔试试题) Setup/hold time是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号
    发表于 06-27 15:05

    最全的硬件工程师笔试试题

    硬件面试题之一 1、下面是一些基本的数字电路知识问题,请简要回答之。 (1) 什么是 Setup 和 Hold 时间? 答:Setup/Hold Time 用于测试芯片对输入信号和时钟信号之间的时间
    发表于 06-26 15:34

    常见电子类硬件笔试题整理(含答案)

    violation,画图说明,并说明解决办法。(威盛VIA2003.11.06上海笔试试题) Setup/hold time是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号
    发表于 05-26 14:30

    主流的 MCU 开发语言为什么是 C 而不是 C++?

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩不转。先说内存这道坎儿。您当stm32f4的
    的头像 发表于 05-21 10:33 1279次阅读
    主流的 MCU 开发<b class='flag-5'>语言</b>为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C</b>++?