if
/else
と#if
/ #else
/の構造が混同されてい#endif
ます。
- それらの違いは何ですか?
- それぞれをどのような特定の状況で使用する必要がありますか?
if/else と #if/#else/#endif について混乱しています。それらは同じロジック機能を持っているようです。
それらの違いは何ですか?
#if
、#else
および#endif
前処理に属します。それらは実行されませんが、テキスト置換の指示です。これらは、テキスト エディターに通常見られる自動 "検索 & 置換" 機能のようなものと考えることができます。
if
およびelse
は実行時の構成要素です。これらは、プログラムの実行中に実行されると考えることができます。
このプログラムがあるとしましょう:
#include <iostream>
#define VALUE 1
int main()
{
#if VALUE == 1
std::cout << "one\n";
#else
std::cout << "not one\n";
#endif
}
コンパイラにこのプログラムをコンパイルするように指示すると、「実際の」C++ コードが実際にコンパイルされる前に、プリプロセッサがテキストの置換を行います。プログラムは次のようになります。
#include <iostream>
int main()
{
std::cout << "one\n";
}
さて、技術的には、ここで使用できif
ます:
#include <iostream>
#define VALUE 1
int main()
{
if (VALUE == 1)
{
std::cout << "one\n";
}
else
{
std::cout << "not one\n";
}
}
しかし、C++ ではfor constants を使用しません#define
。代わりに次のようなものがあります。
#include <iostream>
int const value = 1;
int main()
{
if (value == 1)
{
std::cout << "one\n";
}
else
{
std::cout << "not one\n";
}
}
おそらく、値は、たとえばユーザー入力によって、プログラムの実行中にのみ認識されます。#if
次に、プログラムが実行される前にのみ機能する を使用することは明らかにできません。使用する必要がありますif
:
#include <iostream>
int main()
{
int value;
std::cin >> value; // gross simplification here
if (value == 1)
{
std::cout << "one\n";
}
else
{
std::cout << "not one\n";
}
}
What kind of specific situations for me to choose each of them?
初心者向けの良いガイドラインは次#if
のとおり#ifndef
です。プリプロセッサでしか解決できない問題が発生した場合は、 のさらなる使用を検討してください。#if