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
解释:
由于 x
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