我在C程序中发现了这个表达式而我没有得到它:
struct stack_rec *ss;
ss=(struct stack_rec *)EMalloc(sizeof(struct stack_rec));
if (ss) {
int res;
res = (ss->elem = * i , 1); // what does this mean ????
if (res <= 0)
return res;
if (*s == 0) {
ss->next = 0;
} else {
ss->next = *s;
}
*s = ss;
return 2;
}
return 0;
res = (ss->elem = * i , 1);
是什么意思?它是一个布尔表达式吗?我用0而不是1来尝试它,它总是返回第二个参数的值!请问有人解释这个表达吗?
答案 0 :(得分:9)
看起来很破碎。它是逗号运算符的一种用法,它只是评估最终表达式的值,即1
。
因此,该代码相当于:
ss->elem = *i;
res = 1;
随后对res
的测试似乎毫无意义,因而破裂。
答案 1 :(得分:1)
逗号看到的是一个使用不多的C运算符。
基本上,它的作用是执行2个语句(ss-&gt; elem = * i;和1;)。声明1;不太重要。
之后它返回最后一个语句的结果(在本例中为1)