C 程序的输出 |设置 46
QUE.1 C 程序后会输出什么?
#include
int main()
{
char* str = "IncludeHelp";
printf("%c\n", *&*str);
return 0;
}
选项
a) 错误
b) 包含帮助
c) 我
d)*我
Answer: c
说明: & 是引用运算符, * 是解引用运算符。我们可以多次使用这些运算符。 str 指向 IncludeHelp 的第一个字符,*str 指向“I”,* & 再次引用和取消引用 str 的值。
QUE.2 C 程序的输出结果是什么?
#include
int main()
{
int iVal;
char cVal;
// void pointer
void* ptr;
iVal = 50;
cVal = 65;
ptr = &iVal;
printf("value =%d, size= %d\n", *(int*)ptr, sizeof(ptr));
ptr = &cVal;
printf("value =%d, size= %d\n", *(char*)ptr, sizeof(ptr));
return 0;
}
选项
a) 错误
b) 值 = 50,大小 = 4
值 = 65,大小 = 4
c) 值 =50,大小 = 4
值 = 65,大小 = 1
d) 垃圾值
Answer: b
说明: void 指针可以转换为任何类型的数据类型,指针占用 4 个字节(在 32 位编译器上)。要使用 void 指针打印值,您必须像这样写 *(data_type*)void_ptr;。
QUE.3 C 程序的输出结果是什么?
#include
int main()
{
char ch = 10;
void* ptr = &ch;
printf("%d, %d", *(char*)ptr, ++(*(char*)ptr));
return 0;
}
选项
一) 11, 11
b) 10、11
c) 错误
d) 10, 10
Answer: a
解释: *(char*)ptr 将返回 ch 的值,因为我们知道 printf 从右到左求值。因此,++(*(char*)ptr) 会将值增加到 11。
QUE.4 以下 C 程序的输出是什么?
#include
int main()
{
int a = 10, b = 2;
int* pa = &a, *pb = &b;
printf("value = %d", *pa/*pb);
return 0;
}
选项
一)5
b) 5.0
c) 错误
d) 这些都不是
Answer:c
说明:错误:在注释中发现意外的文件结尾。编译器将运算符/ 和 * 视为 /*,这恰好是注释的开始。要修复错误,请使用 *pa/ *pb(运算符之间的空格)或 *pa/(*pb)。
QUE.5 以下 C 程序的输出是什么?
#include
int main()
{
int a = 10;
int b = 2;
int c;
c = (a & b);
printf("c= %d", c);
return 0;
}
选项
a) c=12
b) c=10
c) c=2
d) c = 0
Answer:c
说明:按位 AND (&)运算符复制位,如果它们都存在于两个操作数中。这里,a的二进制是“1010”,b的二进制是“0010”。因此,表达式 (a & b) 的结果是“0010”,相当于十进制中的 2。