1972


C言語で関数の戻り値をチェックする方法で

[code]

    if ((ret = func()) == -1)
    
[/code]

という書き方があります。

これは

[code]

    ret = func();
    if (ret == -1)
    
[/code]

と同じ意味なのですが、上記の書き方を検索して調べる時、どういうキーワードで調べればいいでしょうか? (Yoda
notationなどのように、名前はあるのでしょうか？ )

また、上記の書き方は、MISRACやその他コーディング規約においては、許可されたものなのでしょうか？


CC BY-SA 3.0
2014-12-18T02:26:06.100
1961
2015-09-01T04:26:02.923
2014-12-18T04:15:44.570
49
4840
question
c
if ((ret = func()) == -1)という書き方


ご質問の回答になっていないかとは思いますが、私見としてご覧頂ければ幸いです。

if ((ret = func()) == -1)

の記述方法は、テストの際、デバッガでfunc()の戻り値を正確に把握するためのブレークポインタが打てないと思います。

昔、そうやって指導されましたので、今も多言語でもその教えを踏襲しています。


CC BY-SA 3.0
2014-12-18T03:46:35.163
1971
2014-12-18T03:46:35.163
2096
1961
answer


`if ((ret = func()) == -1)`との書き方は、一般的に「assignment in condition」、または「assignment
in conditional expression」と呼ばれると思います。

ほとんどのコーディング規則に許可されません。（MISRA 2004ではルール13.1）


CC BY-SA 3.0
2014-12-18T03:47:35.570
1972
2014-12-18T03:54:46.817
2014-12-18T03:54:46.817
3371
3371
1961
answer


上記の書き方に対する固有名詞は聞いたことがありません。  
"assignment in conditional expression" とかで検索するしかなさそうな気がします。

一般論としては、比較演算子とのタイプミスだったりする可能性があるため、 避ける方が多い書き方かと思います。


CC BY-SA 3.0
2014-12-18T03:53:38.733
1973
2014-12-18T03:53:38.733
2432
1961
answer


I saw this expression before in some code.

As you know, the expression `if ((ret = func()) == -1)` is the same as

[code]

    ret = func();
    if (ret == -1)
    
[/code]

but it is not a good recommendation for the C programmer.


CC BY-SA 3.0
2015-03-23T04:20:40.167
8249
2015-03-23T07:25:24.553
2015-03-23T07:25:24.553
3313
8959
1961
answer