C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。
問題① 次のプログラムは、文字と整数のどちらを出力しますか?
#include <iostream>
int main()
{
std::cout << 'A' << std::endl;
}
このプログラムは、文字の A を出力します。
C++ では、‘A’ のような文字リテラルは char型です。std::cout を使って出力をおこなう場合、渡した値の型を判断して適切な形式を選んでくれます。char型を渡せば、素直に文字が出力されます。
問題② 次のプログラムを、C言語(C95) でも C++(C++03) でもコンパイルでき、同じ実行結果になるように書き換えてください。
#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で書く |
|
|
管理者情報 | プライバシーポリシー |