4

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);どういう意味ですか? ブール式ですか?1 ではなく 0 で試してみましたが、常に 2 番目のパラメーターの値が返されます。誰かこの表現を説明してくれませんか?

4

2 に答える 2

9

壊れているように見えます。これはコンマ演算子を使用したもので、単純に最終的な式の値に評価されます1

したがって、そのコードは次と同等です。

ss->elem = *i;
res = 1;

その後の のテストはres無意味で、壊れているように見えます。

于 2012-08-31T10:46:13.847 に答える
1

ご覧のコンマは、あまり使用されていない C 演算子です。

基本的には、2 つのステートメント (ss->elem = *i; と 1;) を実行します。ステートメント 1; あまり効果がありません。

その後、最後のステートメント (この場合は 1) の結果を返します。

于 2012-08-31T10:47:34.783 に答える