gpt4 book ai didi

c - 为什么我没有收到任何错误?在这两行之间--- typedef int floa[1]; floa a[5]={5,6,1,2,6,8};

转载 作者:行者123 更新时间:2023-11-30 20:57:39 25 4
gpt4 key购买 nike

请解释一下代码背后的逻辑/..

我在代码块中做。我得到了答案 20。为什么?请解释一下。

#include <stdio.h>
#include <conio.h>
int main()
{
typedef int floa[1];
floa a[5]={5,6,1,2,6,8};

printf("the value is %u",sizeof(a));
return 0;
}

我应该得到一个错误,但我没有,为什么?

最佳答案

关键在这里:typedef int floa[1]

#include <stdio.h>                                                                                      
int main()
{
typedef int floa[3];
floa a[4]={5,6,1,2};

printf("the value is %u value:%d %d %d %d %d %d %d %d",sizeof(a), a[0][0], a[0][1], a[0][2], a[0][3], a[1][0], a[1][1], a[1][2], a[1][3]);
return 0;
}

运行上面的代码,你就会理解你的代码。上面的代码给出了 size = 48,所以基本上你的 typedef 正在创建“m x n”矩阵效果。

但正如 Lee Daniel Crocker 提到的,在 typedef 中隐藏数组并不是一个好主意。

关于c - 为什么我没有收到任何错误?在这两行之间--- typedef int floa[1]; floa a[5]={5,6,1,2,6,8};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57168545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com