我从printf(“%d”)获得的输出是什么意思?

时间:2019-11-09 12:39:58

标签: c printf stdio

我今天尝试了一个代码,并注意到printf(“%d”)仍然有输出。 在我的计算机上,输出为“ 1487504216”。 我想知道为什么得到输出以及输出的含义。 以下是我尝试过的代码。

//This is Order Model

class Order extends Model
{

    public function users()
    {
        return $this->hasOne(User::class);
    }
}


class User extends Authenticatable
{
  public function Order()
    {
        return $this->hasMany(Order::class);
    } 
}

2 个答案:

答案 0 :(得分:4)

printf("%d",...期望下一个参数是要打印的数字。您没有向其传递参数,因此它只会从堆栈中获取下一个数据,并认为它是要打印的变量。因此,您读取了一些垃圾数据并打印出来...

这通常被称为“未定义行为”,我的解释对于某些编译器和平台可能是正确的,但是其他编译器和平台可能会拦截从堆栈中读取的无效内容并中止您的程序,否则可能会发生其他任何事情: 未定义

答案 1 :(得分:-1)

printf返回打印的字符数。在您的情况下,您会得到一个奇怪的数字,因为格式无效。 printf("%d", 74)将返回2,因为它正在打印2个字符。