ここから本文です

c言語についての質問です。 char a[5]; int x=0; a[x++]=1; この場合...

cer********さん

2014/11/2523:42:36

c言語についての質問です。

char a[5];
int x=0;

a[x++]=1;


この場合、1はa[0]とa[1]のどちらに入るのですか?

=1とx++のどちらが先に処理されるのかが知りたいです。

閲覧数:
11
回答数:
3

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2014/11/2600:38:28

1の代入とxの値の変化のどちらが先かは定義されていません。;までの間にxの値の変化が起こることは保証されます。

しかし、x++は、xの値を返し、しかる後xをインクリメントする(インクリメントした値を返すのではない)ことは決まっていますので、質問の場合は必ずa[0]に対するアクセスになります。
ちなみに、++xであれば、xをインクリメントした値を返すことが決まっていますので、xの値が0のときに
a[++x]=1;
としたならばa[1]に1が代入され、xは1になっていることになります。

試してみる、のも悪くはないのですが、その結果が一般に言えるかどうかというのは十分考察する必要がありますね。Cって結構未定義だとか処理系依存定義ってのがありますから。

質問した人からのコメント

2014/11/26 00:50:34

感謝 聞きたかったことがそのまま回答になっていたので。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

foo********さん

2014/11/2600:30:15

やってみればいいじゃない。
なんで、ネットで他人に、きくのかなぁ。。。

k03********さん

2014/11/2600:04:12

cerm8trynm98w7eunehcmさん

テストすればよい。

char a[5];
int x=0;

a[0]=a[1]=0;
a[x++]=1;
printf("%d %d \n",a[0],a[1]);

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる