关于c语言的函数调用和编译

C语言 码拜 8年前 (2017-04-13) 858次浏览
语句 sizeof(3+printf(“ABC”));
什么不会输出ABC,具体从编译的角度讲解一下吧,谢谢
解决方案

10

参考特性6:
特性6:当表达式作为sizeof的操作数时,它返回表达式的计算结果的类型大小,但是它不对表达式求值!
http://blog.csdn.net/hust_sheng/article/details/50537609

5

本人反汇编,单步执行

引用:

参考特性6:
特性6:当表达式作为sizeof的操作数时,它返回表达式的计算结果的类型大小,但是它不对表达式求值!
http://blog.csdn.net/hust_sheng/article/details/50537609

i get关于c语言的函数调用和编译

10

原因是sizeof不是函数,只是个关键字,编译时就确定了,所以不会调用函数
相似的 sizeof(++i)  也不会让i自加

5

参考gcc源代码中sizeof的实现。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于c语言的函数调用和编译
喜欢 (0)
[1034331897@qq.com]
分享 (0)