我来自高级 OOP 语言 C# 和 Java,最近开始对 C 感到摸不着头脑。我觉得 C 有点奇怪,就像人们觉得 JS 一样。所以想澄清如下:
下面给出了错误,这看起来很直观,因为即使在 OOP 语言中,它看起来也像是不正确的语法
int i=0,1,2;
/*
Error : expected identifier or ‘(’ before numeric constant
int i = 0, 1, 2;
^
*/
然而下面的效果令人惊讶:
int i;
i = 0,1,2; //works
为什么会出现这种行为?保留这种行为有什么意义吗?或者只是一些解析技术细节?
i = 0,1,2;
这是赋值,相当于:
(i = 0), 1, 2;
逗号运算符(优先级最低)从左到右计算所有操作数,首先是赋值i = 0
,那么表达式1
and 2
并丢弃结果。
第二个例子
int i=0,1,2;
是初始化。与合法的初始化进行比较int i = 0, j = 0;
.
如果您使用以下方法,它会起作用:
int i=(0,1,2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)