我在 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);
是什么意思?它是一个 boolean 表达式吗?我试过用 0 而不是 1,它总是返回第二个参数的值!谁能解释一下这个表达式?
最佳答案
看起来坏了。这是对逗号运算符的使用,它只计算最终表达式的值,即 1
。
因此,由于该代码等同于:
ss->elem = *i;
res = 1;
res
的后续测试似乎毫无意义,因此被破坏了。
关于c - C中的 boolean 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12213747/