C中奇怪的初始化
Posted
技术标签:
【中文标题】C中奇怪的初始化【英文标题】:Weird initialization in C 【发布时间】:2022-01-10 07:39:47 【问题描述】:我有这段代码,但我不知道它是如何工作的
#include <stdio.h>
int main(void)
int numero = (const int i = 10; i+10;);
printf("%d\n", numero); // Prints 20
return 0;
为什么如果我删除第二部分 (i+10;),编译器会出错? 为什么需要括号?
谢谢你^^!
【问题讨论】:
【参考方案1】:这是一个GCC statement expression。它执行其中的语句,并返回在最后一条语句中计算的值。因此numero
被初始化为20
。如果删除第二部分,则没有表达式作为最后一条语句,因此无法从语句表达式中获取值。
大括号对于消除它与普通 C 括号表达式的歧义是必要的。
【讨论】:
以上是关于C中奇怪的初始化的主要内容,如果未能解决你的问题,请参考以下文章