加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c类型等价的编译器

发布时间:2020-12-16 03:40:18 所属栏目:百科 来源:网络整理
导读:在C语言中,如果我们有: typedef int a[100];typedef int b[200]; 那么类型a和b是等价的吗? 据我所知,C使用名称等价, 但我很困惑. 解决方法 在您的示例中,a是int [100]类型的别名,b是int [200]类型的别名.这两种类型不相同,因为数组的大小是其类型的一部分,
在C语言中,如果我们有:
typedef int a[100];
typedef int b[200];

那么类型a和b是等价的吗?
据我所知,C使用名称等价,
但我很困惑.

解决方法

在您的示例中,a是int [100]类型的别名,b是int [200]类型的别名.这两种类型不相同,因为数组的大小是其类型的一部分,不同的大小意味着不同的类型.

如果第二行是typedef int b [100] ;,则a和b是等价的.

As far as i know C uses name equivalence

结构和联合在名义上是键入的,如果你有两个标记为A和B的结构(或联合)类型,它们具有完全相同的主体,它们仍然被认为是不同的类型.因此,如果变量具有类型struct A,则无法在不首先转换结构B的情况下为其分配结构B.

对于typedef来说,情况并非如此,因为它只是别名.所以如果你有两个typedef typedef X a; typedef X b ;,那么X,a和b都是无法区分的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读