gpt4 book ai didi

c - 为什么可以 int _$[ :>=<%-! .0,};编译?

转载 作者:太空狗 更新时间:2023-10-29 16:19:49 24 4
gpt4 key购买 nike

今天我发现了一些奇怪的语法,比如

 int _$[:>=<%-!.0,};

在一些旧代码中,但实际上代码没有注释。这行似乎没有编译错误的报告。我单独测试了它,它也可以编译:

int main(){
int _$[:>=<%-!.0,};
return 0;
}

为什么可以编译?

最佳答案

使用 Digraph(见下文),该行将转换为:

int _$[]={-!.0,};

右边,.0double字面量,!是逻辑非运算符,- 是算术否定运算符,, 是结尾的逗号。 {-!.0,} 是一个数组初始值设定项。

左边的 int _$[] 定义了一个 int 数组。但是,还有最后一个问题,_$ 不是标准 C 中的有效标识符。一些编译器(例如 gcc)支持它作为扩展。


C11 §6.4.6 Punctuators

In all aspects of the language, the six tokens

<: :> <% %> %: %:%:

behave, respectively, the same as the six tokens

[  ]  {  }  #  ##

关于c - 为什么可以 int _$[ :>=<%-! .0,};编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001620/

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