📜  C 程序的输出 |设置 62(声明和初始化)

📅  最后修改于: 2022-05-13 01:56:11.009000             🧑  作者: Mango

C 程序的输出 |设置 62(声明和初始化)

先决条件: C 编程中的声明和初始化
一季度。考虑以下代码:

C
#include 
void main()
{
    extern int i;
    i = 20;
    printf("%d", sizeof(i));
}


C
#include 
void main()
{
    extern int fun(float);
    int a;
    a = fun(3.14);
    printf("%d", a);
}
int fun(aa) float aa;
{
    return ((int)aa);
}


C
#include 
void main()
{
    struct geeks {
        char name;
        int age;
        float sal;
    } struct geeks g = { "GEEKS" };
    printf("%d %f", g.age, g.sal);
}


C
#include 
void main()
{
    int x = 10, y = 20, z = 5, i;
    i = x < y < z;
    printf("%d", i);
}


C
#include 
void main()
{
    enum status { pass,
                  fail,
                  atkt };
    enum status stud1, stud2, stud3;
    stud1 = pass;
    stud2 = fail;
    stud3 = atkt;
    printf("%d %d %d", stud1, stud2, stud3);
}


上面代码的输出是什么?
A.2
B. 4
C.会因编译器而异。
D、错误。

Output: D

错误:格式“%d”需要“int”类型的参数,但参数 2 的类型为“long unsigned int”
解释:
在这里,编译器生成错误,因为extern int i是声明而不是定义。
Q2。考虑以下代码:

C

#include 
void main()
{
    extern int fun(float);
    int a;
    a = fun(3.14);
    printf("%d", a);
}
int fun(aa) float aa;
{
    return ((int)aa);
}

上面代码的输出是什么?
A.错误。
B. 3.14
C. 0
D. 3

Output: A

错误:“有趣”的类型冲突
说明:发生错误是因为我们将 ANSI 原型与 K & R 风格的函数定义混合在一起。当我们为函数使用 ANSI 原型并将float传递给该函数,它会被提升为double 。当函数将 double 接受为 float 时,会发生类型不匹配,因此会出现错误。
Q3。考虑以下代码:



C

#include 
void main()
{
    struct geeks {
        char name;
        int age;
        float sal;
    } struct geeks g = { "GEEKS" };
    printf("%d %f", g.age, g.sal);
}

上面代码的输出是什么?
A.垃圾值
B. 0 0.000000
C.会因编译器而异。
D、错误。

Output: B
  0 0.000000

解释:
当自动结构被部分初始化时,结构的其余元素被初始化为 0。
第 4 季度。考虑以下代码:

C

#include 
void main()
{
    int x = 10, y = 20, z = 5, i;
    i = x < y < z;
    printf("%d", i);
}

上面代码的输出是什么?
A. 5
B. 0
C.1
D. 10

Output: C
  1

解释:
由于 xi
Q5.考虑以下代码:

C

#include 
void main()
{
    enum status { pass,
                  fail,
                  atkt };
    enum status stud1, stud2, stud3;
    stud1 = pass;
    stud2 = fail;
    stud3 = atkt;
    printf("%d %d %d", stud1, stud2, stud3);
}

上面代码的输出是什么?
A. 1 2 3
B.通过失败攻击
C. 1 2 0
D. 0 1 2

Output: D
0 1 2