C中的布尔表达式

Joy*_*Joy 4 c boolean boolean-operations

我在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;                                                      
Run Code Online (Sandbox Code Playgroud)

什么res = (ss->elem = * i , 1);意思?它是一个布尔表达式吗?我用0而不是1来尝试它,它总是返回第二个参数的值!请问有人能解释这个表达吗?

unw*_*ind 9

看起来很破 它是逗号运算符的用法,它简单地计算最终表达式的值,即1.

因此,由于该代码相当于:

ss->elem = *i;
res = 1;
Run Code Online (Sandbox Code Playgroud)

随后的测试res看起来毫无意义,因而破碎.