结构值中的类型不匹配 #包括 内部主(空){ 结构体的构造 { 字符名[20]; 浮动价格; }; 结构书b={5}; printf(“%f\n”,b.price); 返回0; }

结构值中的类型不匹配 #包括 内部主(空){ 结构体的构造 { 字符名[20]; 浮动价格; }; 结构书b={5}; printf(“%f\n”,b.price); 返回0; },c,C,那么,正在通过的第5条发生了什么?它存放在哪里?还是根本就没有存储 即使我打印b.name,也不会打印任何内容。将5用作结构的第一个元素的初始值设定项。这恰好是一个数组,因此5初始化该数组的第一个元素 在C语言中,如果使用括号内的初始值设定项,那么所有元素都会被初始化;而您未指定的将获得0。因此,这与: #include <stdio.h> int main(void) { struct book { char name[20]; f

那么,正在通过的第5条发生了什么?它存放在哪里?还是根本就没有存储


即使我打印b.name,也不会打印任何内容。

5
用作结构的第一个元素的初始值设定项。这恰好是一个数组,因此
5
初始化该数组的第一个元素

在C语言中,如果使用括号内的初始值设定项,那么所有元素都会被初始化;而您未指定的将获得0。因此,这与:

#include <stdio.h>

int main(void) {
    struct book
    {
        char name[20];
        float price;
    };
    struct book b={5};
    printf("%f\n",b.price);
    return 0;
}
浮点数上的
printf
将打印
0
。如果尝试将
b.name
打印为字符串,则将打印包含一个值为
5
的字符的字符串。在大多数系统上,这将是一个不可打印的字符,因此您可能无法获得可见的输出


要返回
5
,您可以执行以下操作:
printf(“%d\n”,b.name[0])

5
用作结构的第一个元素的初始值设定项。这恰好是一个数组,因此
5
初始化该数组的第一个元素

在C语言中,如果使用括号内的初始值设定项,那么所有元素都会被初始化;而您未指定的将获得0。因此,这与:

#include <stdio.h>

int main(void) {
    struct book
    {
        char name[20];
        float price;
    };
    struct book b={5};
    printf("%f\n",b.price);
    return 0;
}
浮点数上的
printf
将打印
0
。如果尝试将
b.name
打印为字符串,则将打印包含一个值为
5
的字符的字符串。在大多数系统上,这将是一个不可打印的字符,因此您可能无法获得可见的输出


要返回
5
,您可以执行以下操作:
printf(“%d\n”,b.name[0])

初始化在结构中发生,顺序是在声明类型为
struct
的变量创建时传递的值。因此
5
自然流向字符数组的第一个元素。因此5存储为字符数组的第一个元素。初始化
struct
键入变量您不能跳过用于初始化的变量,您必须按照
结构中变量的声明顺序进行初始化。Matt McNabb回答说,

初始化在结构中按照创建
结构
类型的变量时传递值的顺序进行,就在声明之后。因此
5
自然流到字符数组的第一个元素。因此5存储为字符数组的第一个元素。初始化
struct
类型变量时,不能跳过用于初始化的变量,您必须按照
结构中变量的声明顺序进行初始化。Matt McNabb回答说5不是可打印字符。试试大一点的,比如65。他们尝试打印名称。5不是可打印字符。试试大一点的,比如65。他们试着打印名字。