📜  C 程序的输出 |设置 46

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

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。