📜  C 程序的输出 |第 63 集

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

C 程序的输出 |第 63 集

1) 以下程序的输出是什么?

#include 
#include 
int main(void)
{
    char* p = "geeks";
    printf("%lu %lu %lu ", sizeof(p), sizeof(*p), sizeof("geeks"));
    printf("%lu %lu", strlen(p), strlen("geeks"));
    return 0;
}

输出:

8 1 6 5 5

说明:p是一个指针,以便的sizeof返回的sizeof(字符*),* p是字符类型,的sizeof(“爱好者”)返回字符包括空字符的数字,字符串的strlen的(p)返回长度指出用p不空字符,无空字符strlen的返回字符数。

2) 以下程序的输出是什么?

#include 
int main()
{
    int array[] = {[1] = 1, [0] = 2, [2] = 3 };
    printf("%d %d %d", array[0], array[1], array[2]);
    return 0;
}

输出:



2 1 3

说明:上述初始化技术是唯一的,但在 C 中是允许的。

3) 以下程序的输出是什么?

#include 
char A()
{
    char c = 'B';
    return c;
}
  
int main()
{
    printf("%lu", sizeof(A()));
    return 0;
}

输出:

1

说明:即使这是函数指针,sizeof 也会获取返回类型并返回该数据类型的大小。这里,返回类型是char,所以输出是1。

4) 以下程序的输出是什么?

#include 
int main()
{
    int n;
    n = (int)sizeof(!2.3);
    printf("%d", n);
    return 0;
}

输出:

4

解释:“!”运算符接受一个参数,如果值为 0,则返回 1,否则返回 0。所以,!2.3 是 0。到 sizeof 0 是一个整数,所以输出是 4。

5) 以下程序的输出是什么?

#include 
#define declare(x) int x;
int main()
{
    int a;
    declare(a)
        printf("declare(a)");
    return 0;
}

输出:

Compilation error

说明:宏声明会在编译前被替换,结果代码在程序中会有两次“int a”声明,导致编译错误。