📜  C 程序的输出 |第 41 集

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

C 程序的输出 |第 41 集

QUE.1 如果编译并执行以下c 代码,将输出什么?

#include 
int main()
{
    int a = 5;
    float b;
    printf("%d ", sizeof(++a + b));
    printf("%d ", a);
    return 0;
}

(a)2 6
(b)4 6
(c)2 5
(d)4 5

Answer : d

解释:

++a +b = 6 + Garbage floating point number
 = Garbage floating point number
// From the rule of automatic type conversion 

因此 sizeof运算符将返回 4,因为 c 中浮点数据类型的大小为 4 个字节。任何变量的值都不会在 sizeof 运算符内修改。因此变量 a 的值将保持为 5。

QUE.2 如果编译并执行以下c 代码,将输出什么?



#include 
  
int main()
{
    int array[3] = { 5 };
    int i;
    for (i = 0; i <= 2; i++)
        printf("%d ", array[i]);
    return 0;
}

(a)5垃圾垃圾
(b)5 0 0
(c)5 null null
(d) 编译错误
(e) 以上都不是

Answer : b

说明:在声明时初始化数组元素的数组的存储类是静态的。静态整数的默认初始值为零。
QUE.3 如果编译并执行以下c 代码,将输出什么?

#include 
int main()
{
    register int i, x;
    scanf("%d", &i);
    x = ++i + ++i + ++i;
    printf("%d", x);
    return 0;
}

(一)17
(b)18
(c)21
(d)22
(e) 编译器错误

Answer : e

解释:在 C 中,寄存器变量存储在 CPU 中,而不存储在 RAM 中。所以寄存器变量没有任何内存地址。所以写&a是非法的。

QUE.4 如果编译并执行以下c 代码,将输出什么?

#include 
int main()
{
    int a = 5;
    int b = 10;
    {
        int a = 2;
        a++;
        b++;
    }
    printf("%d %d", a, b);
    return 0;
}

选项
(一)5 10
(b)6 11
(c)5 11
(d)6 10
(e) 编译器错误

Answer : c

说明:局部变量的默认存储类是auto。 auto 变量的范围和可见性在它声明的块内。在C中,如果有两个同名的变量,那么
我们只能访问局部变量。因此,内部块变量a 是在该块内声明和定义的局部变量。
当控制来自内部块局部变量时,a 变得死了。

QUE.5 如果编译并执行以下 C 代码,将输出什么?

#include 
int main()
{
    float f = 3.4e39;
    printf("%f", f);
    return 0;
}

选项
(a)3.4e39
(b)3.40000…
(c)信息
(d) 编译错误
(e) 运行时错误

Answer: c 

说明:如果您将超出浮点数据类型范围的值分配给浮点变量,则不会显示任何编译器错误。它将存储无穷大。