今天有个学生面试,面试题目里面有一道有关 printf 的输出问题
-
源代码如下:
#include <stdio.h>
int main(void)
{
int a = 10, b = 20, c = 30;
printf(" res_a : %d , res_b : %d, res_c : %d\n", a + b + c, (a = a + 10), (c = c * 10));
return 0;
}// 一般的人会觉得这是什么, 60, 20, 300?
// 但是 printf 也是一个函数调用, 函数调用的话就是遵循 栈的先进后出的原则。
// 所以 首先,printf 输出的是最后的 c = c * 10 == 300, 然后是 a = a + 10 == 20, 最后才是 a + b + c ==340 ;
相关文章
- 高级java每日一道面试题-2025年4月10日-微服务篇[Nacos篇]-Nacos的服务健康检查机制是如何工作的?-我回答:
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 字节跳动的一道python面试题
- [置顶] 一道经典的sql面试题不同的写法
- 高级java每日一道面试题-2025年01月24日-框架篇[SpringBoot篇]-如何理解 Spring Boot 中的 Starters(启动器) ?-我回答:
- Android(java)学习笔记131:关于构造代码块,构造函数的一道面试题(华为面试题)
- Android(java)学习笔记188:关于构造代码块,构造函数的一道面试题(华为面试题)
- 一道打印M的面试题
- 「每天一道面试题」Java类的生命周期包括哪几个阶段?
- 一道C++面试题 分析浮点数的二进制表示