2016-04-03 11 views
-1

私は次のようになりますタイプミス行わ:私はエラーを取得することが期待が、いくつかの理由で「1,2」部分に関する警告「未使用の式の結果」を得たXcodeのLLVMプレーンなC式

printf("blah-blah %d %d %d",fancy_func()),1,2; 

を。

はまた、このコードは、すべてのエラーを与えるものではありません(不足している引数を無視する):

int x,y,z; 
x,y,z; 
// OR 
1,2,3; 

これは、一定または配列definationようには見えません。 誰かが1,2,3;またはx,y,z;が有効なコードであり、その理由を説明できますか?

答えて

3

Cには、comma operatorがあります。これは、構文的に合法的な例になります。

+0

@ScottHunterが述べたように、この演算子は役に立たないのですか? – VenoMKO

+0

私は「役に立たない」とは言いません。複数のアクション(例えば、2つの異なる変数をインクリメント)を取ることができる特定の状況(例えば、 'for'ループヘッダー)がありますが、構文には文または文のブロックではなく式が必要です。コンマ演算子でこれを行うことができます。 –

+0

ああ、私は 'for'ループの複数のステートメントを忘れていました。ありがとう、あなたは私を軌道に乗せました! – VenoMKO

1

リストは何もしません。それらは単純な式のリストです。無意味です(あなたがここで使ったように)。しかし、違法ではありません。

関連する問題