Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解释这个C联合输出 #包括 联合p { int x; chary; } k={.y=97}; int main() { printf(“%d\n”,k.y); 返回0; } 产出:97_C_Unions - Fatal编程技术网

如何解释这个C联合输出 #包括 联合p { int x; chary; } k={.y=97}; int main() { printf(“%d\n”,k.y); 返回0; } 产出:97

如何解释这个C联合输出 #包括 联合p { int x; chary; } k={.y=97}; int main() { printf(“%d\n”,k.y); 返回0; } 产出:97,c,unions,C,Unions,我遇到了这个问题。正如我们所知,我们只能初始化Union的第一个成员。但是在这种情况下,在初始化时,y变量是通过某种给定的方法初始化的 有谁能向我解释一下k={.Y=97}是如何违反丹尼斯·里奇的书《联合只能用其第一个成员类型的值初始化》中所述的规则并初始化第二个变量的?k&R是一本伟大的书,但它已经过时了。在C99中,您可以这样做 在同一示例中使用指定的初始值设定项 初始化第二个工会成员年龄: 谁告诉过你只能初始化某个联盟的第一个成员?这是一个错误(您可以初始化某些联合的任何单个成员)。指定的

我遇到了这个问题。正如我们所知,我们只能初始化Union的第一个成员。但是在这种情况下,在初始化时,
y
变量是通过某种给定的方法初始化的


有谁能向我解释一下k={.Y=97}是如何违反丹尼斯·里奇的书《联合只能用其第一个成员类型的值初始化》中所述的规则并初始化第二个变量的?

k&R是一本伟大的书,但它已经过时了。在C99中,您可以这样做

在同一示例中使用指定的初始值设定项 初始化第二个工会成员年龄:


谁告诉过你只能初始化某个
联盟的第一个成员?这是一个错误(您可以初始化某些联合的任何单个成员)。指定的初始化器是在c99中引入的。dmr在70年代就不知道这一点。也许endianness逆转了规则。+1个好问题。我也不知道!你说“K&R……很老”。我倾向于认为,在计算机世界中,35年(1978年第1版)有些超越了“旧”。。。甚至第二版(IIRC于1988年出版)也是“旧版”。。。
#include <stdio.h>
union p
{
    int x;
    char y;
}
k = {.y = 97};

int main()
{
    printf("%d\n", k.y);
    return 0;
}

OUTPUT: 97
union {
       char birthday[9];
       int age;
       float weight;
      } people = { .age = 14 };