为什么我们不写int x = printf(“text”);因为printf()语句每次
发布时间:2020-12-14 22:29:30 所属栏目:资源 来源:网络整理
导读:由于printf函数每次使用时都会返回一个整数值(屏幕上写入的字符数),因此每次调用printf时都不一定要将此值存储在int变量中吗? 编辑: 如果函数返回某个值,为什么C不需要在函数调用时存储该值? 解决方法 如果您认为您的C程序将被翻译成汇编语言(例如x86程序
由于printf函数每次使用时都会返回一个整数值(屏幕上写入的字符数),因此每次调用printf时都不一定要将此值存储在int变量中吗?
编辑: 如果函数返回某个值,为什么C不需要在函数调用时存储该值? 解决方法
如果您认为您的C程序将被翻译成汇编语言(例如x86程序集),则读取函数的返回值只需读取存储在CPU的“eax”寄存器中的值.
历史上编写的C编程语言是一种易于在非常有限的(对于今天的标准)PDP-11计算机上进行解析和编译的语言. 早期的C编译器(好吧,其中一些)接受声明的函数没有返回类型而没有返回,如下所示: myFunc(int *x) { *x = *x + *x; } 这是早期C编译器将其解释为的函数 int myFunc(int *x) { *x = *x + *x; return 0; } 因此,您的问题的答案可能是“因为遗留代码”. 但是,应该或必须检查返回值的情况. MISRA C指南第16.10条规定: 因此,如果您需要确保printf()已打印某些内容,如果您使用返回值作为“错误信息”,则必须遵循MISRA准则,您必须检查该值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |