lifo4.cとlifo3.cは全く同じプログラムです。前回と同様に、インクリメント演算子(++)とデクリメント演算子(--)を、文の中に入れ込んでしまいました。
#include <stdio.h> int main(void) { int n, data[100], *p; printf("数を入力してください->"); scanf("%d", &n); p = data; while (n >= 0) { *p++ = n; printf("数を入力してください->"); scanf("%d", &n); } while (p > data) printf("%d\n", *--p); }
lifo4.cで、11行目の
*p++ = n;
は、++がpの後ろに書かれているので、++はポストインクリメント(後置増分)です。従って、先にpがポイントするint領域にnを代入し、その後pを次のint領域に進めます。
対して、15行目の
*--p
は、どうでしょうか。
ここでは、まず--がpの前に書かれているので、--はプリデクリメント(前置減分)です。従って、先にpを直前のint領域に移し、その後pがポイントするint領域の内容を返します。
実は、C言語では、lifo4.cスタイルで書かれているプログラムをよく見かけます。
それでは、次回の宿題です。
文字列を入力し、英小文字があれば英大文字に換えて表示するプログラムを書いてみましょう。
⇒解答と解説は次回
Copyright © ITmedia, Inc. All Rights Reserved.