pac*_*222 9 c
我有这段代码,我不知道它是如何工作的
#include <stdio.h> int main(void) { int numero = ({const int i = 10; i+10;}); printf("%d\n", numero); // Prints 20 return 0; }
为什么如果我删除第二部分(i + 10;),编译器会出错?为什么括号必要?
谢谢^^!
Joh*_*itb 13
这是一个GCC语句表达式.它执行其中的语句,并返回在最后一个语句中计算的值.因此numero被初始化为20.如果删除第二部分,则没有表达式作为最后一个语句,因此无法从语句表达式中获取值.
numero
20
必须使用大括号将其从普通的C括号表达式中消除歧义.
归档时间:
15 年,5 月 前
查看次数:
157 次
最近记录: