如果我们将打印结构变量本身,那么程序的行为是什么

Dev*_*Dev 1 c printf structure output

我正在检查C代码的一些输出.代码是:

main()
{
    struct temp 
    {
        int a;
        float b;
    }t;

    t.a = 5;
    t.b = 2.0;

    printf( "%d   %d    %f" , t, t.a ,t.b); // printing  5  0   0.0000000 ...why?? 
    printf( "%d   %f    %d" , t.a, t.b ,t); // printing  5  2.000000  5 
}
Run Code Online (Sandbox Code Playgroud)

这个程序的输出是什么?打印什么"t"?如果行为未定义,那么在某个C标准中给出的行为将是未定义的.

md5*_*md5 5

是的,这是一个未定义的行为.以下是该标准的相应部分:

§7.21.6 fprintf功能

如果转换规范无效,则行为未定义.如果任何参数不是相应转换规范的正确类型,则行为未定义.