2

以下の最初のプログラムではエラーはありませんが、2番目のプログラムではエラーがあります。どうしてこんなことに?

最初のプログラム:

#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m+1;
printf("%d",k);
}

2番目のプログラム:

#include<stdio.h>
void main()
{
int k=8;
int m=7;
k<m?k=k+1:m=m+1;
printf("%d",k);
}
4

2 に答える 2

5

条件演算子は、代入演算子よりも優先されます。必要な優先順位を設定するには、追加の括弧が必要です。

k < m? k = k + 1 : m = m + 1;

として評価されます

((k < m) ? (k = k + 1) : m) = m + 1;

正しい優先順位を持つために括弧を追加します。

(k < m) ? (k = k + 1) : (m = m + 1);
于 2012-07-16T10:37:32.033 に答える
1

エラーはありません。どちらのプログラムも正しい8の出力を返します。

于 2012-07-16T10:32:26.973 に答える