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语言
    +关注

    关注

    180

    文章

    7618

    浏览量

    138623
  • 代码
    +关注

    关注

    30

    文章

    4857

    浏览量

    69514

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

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

收藏 人收藏

    相关推荐

    C语言程序设计教程第4版第8讲:指针

    C语言指针讲解
    发表于 11-20 14:10 5次下载

    C语言经典笔试题集锦

    有以下程序,如果 x 等于 254,则函数的返回值是多少?
    的头像 发表于 11-09 11:39 346次阅读

    C语言指针学习笔记

    本文从底层内存分析,彻底让读者明白C语言指针的本质。
    的头像 发表于 11-05 17:40 378次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>指针学习笔记

    C语言中的socket编程基础

    Socket编程简介 Socket是一种通信机制,允许程序之间进行通信。在C语言中,socket编程是网络编程的基础。通过使用socket,程序可以发送和接收数据,实现不同计算机之间的通信
    的头像 发表于 11-01 16:51 605次阅读

    C语言C++中结构体的区别

    同样是结构体,看看在C语言C++中有什么区别?
    的头像 发表于 10-30 15:11 428次阅读

    C语言与Java语言的对比

    C语言和Java语言都是当前编程领域中的重要成员,它们各自具有独特的优势和特点,适用于不同的应用场景。以下将从语法特性、内存管理、跨平台性、性能、应用领域等多个方面对C
    的头像 发表于 10-29 17:31 568次阅读

    C语言与其他编程语言的比较

    C语言作为一种历史悠久的编程语言,自其诞生以来,一直在软件开发领域扮演着重要角色。它以其高效、灵活和可移植性强的特点,成为了系统级编程的首选语言之一。
    的头像 发表于 10-29 17:30 522次阅读

    C语言关键字--typedef

    C语言关键字使用方法学习指南!
    的头像 发表于 10-07 12:44 389次阅读

    hex文件如何查看原c语言代码

    直接将 .hex 文件转换回原始的 C 语言代码是不可能的,因为 .hex 文件是二进制文件,它包含了单片机程序编译后的机器码,这些机器码与原始的 C 语言代码在结构和表达上存在巨大的
    的头像 发表于 09-02 10:37 3232次阅读

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 8次下载

    按照这样学习C语言,成为卷王不是梦!

    在计算机编程领域,C语言被誉为一种强大而灵活的编程语言,掌握好C语言不仅可以让你轻松驾驭各种编程任务,还能够为你的职业生涯打下坚实的基础。但
    的头像 发表于 07-06 08:04 409次阅读
    按照这样学习<b class='flag-5'>C</b><b class='flag-5'>语言</b>,成为卷王不是梦!

    PLC编程语言C语言的区别

    在工业自动化和计算机编程领域中,PLC(可编程逻辑控制器)编程语言C语言各自扮演着重要的角色。尽管两者都是编程语言,但它们在多个方面存在显著的区别。本文将从多个维度深入探讨PLC编程
    的头像 发表于 06-14 17:11 3638次阅读

    C语言基础-为什么要使用C

    当今最流行的 Linux 操作系统和 RDBMS(Relational Database Management System:关系数据库管理系统) MySQL 都是使用 C 语言编写的。
    发表于 03-25 11:20 531次阅读

    char是有符号类型还是无符号类型?

    看一个C语言笔试题,题目很简单,问char是有符号类型还是无符号类型?
    的头像 发表于 03-17 10:15 1395次阅读

    嵌入式系统中C语言结构体的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构是C语言编程中允许您存储不同数据类型的数据。
    发表于 03-12 14:29 633次阅读
    嵌入式系统中<b class='flag-5'>C</b><b class='flag-5'>语言</b>结构体的基础实现与应用