加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

为什么我们不写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准则,您必须检查该值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读