今天有个学生面试,面试题目里面有一道有关 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 ;
相关文章
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 解析js中作用域、闭包——从一道经典的面试题开始
- 一道前端面试题:定义一个方法将string的每个字符串间加个空格返回,调用的方式'hello world'.spacify();
- 'abc' 转换成[a, b, c]一道面试题的思考
- 最近整理出了有关大数据,微服务,分布式,Java,Python,Web前端,产品运营,交互等1.7G的学习资料,有视频教程,源码,课件,工具,面试题等等。这里将珍藏多年的资源免费分享给各位小伙伴们
- 一道关于:ArrayList、Vector、LinkedList的存储性能和特性 的面试题
- 一道值得深入思考的iOS面试题详解
- 一道月薪3W的java面试题 (小明和小强都是张老师的学生,张老师的生日是某月某日,2人都不知道张老师的生日)
- 从一道面试题看你对java的理解程度
- 一道印象深刻的面试题:String参数传递问题