- 締切済み
インクリメント、デクリメント。
整数型の変数 i,j,k を宣言し、適当な値を与えてから次の文を実行させて、各変数を出力させる。 j = ++i + ++i ; j = ++i + i++ ; j = i++ + i++ ; ( i = - -j ) + ( k = j ) ; ( i = j- - ) + ( k = j ) ; j = k * ++i ; j = k * i++ ; ■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□ #include <stdio.h> int main(void) { int i , j , k i = 0 ; j = ++i + ++i ; printf(" i = 0 ; j = ++i + ++i ; i = %d , j = %d , k = %d\n ", i , j , k ); i = 0 ; j = ++i + i++ ; printf(" i = 0 ; j = ++i + i++ ; i = %d , j = %d , k = %d\n ", i , j , k ) ; i = 0 ; j = i++ + i++ ; printf(" i = 0 ; j = i++ + i++ ; i = %d ,j = %d , k = %d\n" , i , j , k ) ; i = 0 ; ( i = - -j ) + ( k = j ) ; printf(" i = 0 ; ( i = - -j ) + ( k = j ) ; i = %d , j = %d , k = %d\n " , i , j , k ) ; i = 0 ; ( i = j- - ) + ( k = j ) ; printf(" i = 0 ; ( i = j- - ) + ( k = j ) ; i = %d , j = %d , k = %d\n " , i , j , k ) ; i = 0 ; j = k * ++i ; printf(" i = 0 ; j = k * ++i ; i = %d , j = %d , k = %d\n" , i , j , k ) ; i = 0 ; j = k * i++ ; printf(" i = 0 ; j = k * i++ ; i = %d , j = %d , k = %d\n" , i , j , k ) ; } というプログラムを考えたんですけど、これは正しいでしょうか??
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Trick--o--
- ベストアンサー率20% (413/2034)
間違っています。 セミコロンが無い箇所があります。 "++", "--" を "+ +", "- -"と書くことは出来ません。 意味の無い"+"があります。
- jacta
- ベストアンサー率26% (845/3158)
> これは正しいでしょうか?? いいえ、間違っています。 増減演算子を、副作用完了点より前に、同じオブジェクトに対して複数回使用した場合の動作は未定義です。
- penta-ucky
- ベストアンサー率20% (132/636)
要は書き方(見た目)の問題だと思いますが、 C言語の学習サイトなどで勉強された方がいいと思います。 http://homepage3.nifty.com/mmgames/c_guide/ そのほうが効率も上がると思います。
- t_nojiri
- ベストアンサー率28% (595/2071)
正しい、正しくないって判定だけだと正しいのですが、 ループもしない所にインクリメントやデクリメント使うのは、見辛いだけ。 ついでに、アドバイスしとくとインクリメントと四則計算は見間違えない様に先に計算する方を括弧で囲んでおく方が間違いなし。