トップページ – 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()
{
Color color = 0;
color += 1;
std::cout << color << std::endl;
}
まず、C言語では <iostream> はありませんから、<stdio.h> に置き換えます。
#include <stdio.h>そして、std::cout での出力を、printf関数に変更します。
printf("%d\n", color);C言語では、仮引数を省略することと void と明示することの意味合いが異なりますから、 main関数の引数には、明示的な void を追加します。
int main(void)C言語では、列挙型の変数を宣言する際、「enum」キーワードを省略できませんから、明示的に書くようにします。
また、初期値として int型の 0 を渡すことは、C++ ではキャスト📘を必要としますからキャストも追加します。このキャストの際に指定する型もまた、enumキーワードを明示的に書かないといけません。
enum Color color = (enum Color)0;C++ では、enum型変数に int型を加算できません。 +=演算子を使っているとキャストもできないので、分解した上でキャストを追加します。
color = (enum Color)(color + 1);これで完了です。 全体像を再掲します。
#include <stdio.h>
enum Color {
RED,
GREEN,
BLUE
};
int main(void)
{
enum Color color = (enum Color)0;
color = (enum Color)(color + 1);
printf("%d\n", (int)color);
}実行結果:
1
Programming Place Plus のトップページへ
| はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
| X で ポスト/フォロー | LINE で送る | noteで書く |
|
|
管理者情報 | プライバシーポリシー |