トップページ – Modern C++編 C++編](../../index.html) – 第2章
問題① 次のプログラムは、文字と整数のどちらを出力しますか?
#include <iostream>
int main()
{
std::cout << 'A' << std::endl;
}
このプログラムは、文字の A を出力します。
A
C++ では、‘A’ は char型として扱われます。 std::cout を使って出力を行う場合、渡した値の型を判断して適切な形式を選んでくれます。 char型を渡せば、素直に文字が出力されます。
問題② 次のプログラムを、C言語でも C++ でもコンパイルでき、同じ実行結果になるように書き換えてください。
#include <iostream>
enum Color {
,
RED,
GREEN
BLUE};
int main()
{
= 0;
Color color
+= 1;
color
std::cout << color << std::endl;
}
まず、C言語では <iostream> はありませんから、<stdio.h> に置き換えます。
#include <stdio.h>
そして、std::cout での出力を、printf関数に変更します。
("%d\n", color); printf
C言語では、仮引数を省略することと void と明示することの意味合いが異なりますから、 main関数の引数には、明示的な void を追加します。
int main(void)
C言語では、列挙型の変数を宣言する際、「enum」キーワードを省略できませんから、明示的に書くようにします。
また、初期値として int型の 0 を渡すことは、C++ ではキャストを必要としますからキャストも追加します。このキャストの際に指定する型もまた、enumキーワードを明示的に書かないといけません。
enum Color color = (enum Color)0;
C++ では、enum型変数に int型を加算できません。 +=演算子を使っているとキャストもできないので、分解した上でキャストを追加します。
= (enum Color)(color + 1); color
これで完了です。 全体像を再掲します。
#include <stdio.h>
enum Color {
,
RED,
GREEN
BLUE};
int main(void)
{
enum Color color = (enum Color)0;
= (enum Color)(color + 1);
color
("%d\n", (int)color);
printf}
実行結果:
1
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |