C 程序的输出 |第 60 组(常数)
先决条件: C 常量和字符串
Q.1 这个程序的输出是什么?
#include
using namespace std;
int main()
{
const char *s = "";
char str[] = "Hello";
s = str;
while(*s)
printf("%c", *s++);
return 0;
}
选项
a) 错误
b) 高
c) 你好
d) 赫尔
ans:- c
解释 :
const char *s = "";
常量变量 s 被声明为指向字符类型数组的指针,并用空字符串初始化。
char str[] = "Hello";
变量 str 被声明为字符类型的数组,并使用字符串“Hello”进行初始化。
s = str;
变量 str 的值赋给变量 s。因此 str 包含文本“Hello”。
while(*s)
{ printf("%c", *s++); }
这里 while 循环被执行,直到变量 s 的值可用并打印变量 s 的每个字符。
因此程序的输出是“Hello”。
Q.2 这个程序的输出是什么?
#include
using namespace std;
int get();
int main()
{
const int x = get();
printf("%d", x);
return 0;
}
int get()
{
return 20;
}
选项
a) 垃圾值
b) 错误
c) 20
d) 0
ans:- c
解释 :
int get();
这是函数get() 的函数原型,它告诉编译器返回一个整数值并且不接受任何参数。
const int x = get();
常量变量 x 被声明为整数数据类型并使用值“20”进行初始化。
函数get() 返回值“20”。
Q.3 这个程序的输出是什么?
#include
using namespace std;
int fun(int **ptr);
int main()
{
int i=10;
const int *ptr = &i;
fun(&ptr);
return 0;
}
int fun(int **ptr)
{
int j = 223;
int *temp = &j;
printf("Before changing ptr = %5x\n", *ptr);
const *ptr = temp;
printf("After changing ptr = %5x\n", *ptr);
return 0;
}
选项
a) 我的地址
j的地址
b) 10
223
c) 错误:无法将参数 1 从“const int **”转换为“int **”
d) 垃圾值
ans:- c
解释:这里 ptr 被声明为常量整数指针,i 的地址被分配给它,但在函数fun 中,双指针作为参数传递,因此它不能从 'const int **' 转换为 'int **'。
Q.4 这个程序的输出是什么?
#include
using namespace std;
int main()
{
const int i=0;
printf("%d\n", i++);
return 0;
}
选项
一)10
b) 11
c) 无输出
d) 错误:++需要一个值
ans:- d
解释 :
const int i = 0;
常量变量 'i' 被声明为一个整数,并用值 '0'(零)初始化。
printf("%d\n", i++);
这里变量'i'增加了1(一)。这将创建一个错误“无法修改常量对象”。
因为,我们不能修改 const 变量。
Q.5 这个程序的输出是什么?
#include
using namespace std;
int main()
{
const int c = -11;
const int d = 34;
printf("%d, %d\n", c, d);
return 0;
}
选项
a) 错误
b) -11, 34
c) 11, 34
d) 这些都不是
ans:- b
解释 :-
const c = -11;
常量变量“c”被声明并初始化为值“-11”。
const int d = 34;
常量变量 'd' 被声明为一个整数并被初始化为值 '34'。
printf("%d, %d\n", c, d);
变量 'c' 和 'd' 的值被打印出来。
因此程序的输出是 -11, 34