-2

私が書くと出力はどうなりますか

C ++ではif(5)問題なく実行されますが、C#では同じように実行できません。

if(func()){} //in C# it doesn't runs Why how does C# treats void and how in Turbo C++

void func()
{
return;
}

if(null==null){}//runs in C#

編集

if(printf("Hi"){} //will run and enter into if statement

if(printf(""){}//will enter into else condition if found.

この質問は、TurboCompilerを知らない人を対象としたものではありません。

4

5 に答える 5

5

C#では、ifステートメント内の条件の型は暗黙的にに変換可能である必要がありboolます。これにより、さまざまな状況でのエラーが減り、基本的には良いことです。これは、このようなものがコンパイルされるのを防ぎます。

int x = ...;
if (x = 10) // Valid in C / C++, not in C#

CおよびC++でも、適切なレベルの警告がある場合は、適切なコンパイラが上記の行で警告します。

voidしかし、バージョンがC++で動作する場合は驚いています...

于 2010-07-15T11:34:29.453 に答える
3

C / C ++とは異なり、C#条件はブール値にのみ適用できます。
void関数には戻り値がないため、条件を適用できないことに注意してください。

于 2010-07-15T11:32:57.023 に答える
3

void関数は何も返さないため、その戻り値をifステートメントで確認することはできません。

C++でさえあなたにそれをさせません。

于 2010-07-15T11:33:54.323 に答える
1

C / C ++では、ゼロ以外の整数値は論理真と同じです。この理由は、C / C ++にはブール型が定義されていないため、整数がブール変数として使用されていたためです。後で、コンパイラが関数の適切なオーバーロードされたバージョンを見つけようとすると、この種の暗黙的な型変換が予期しない動作を引き起こす可能性があることがわかりました。したがって、C#では間違いは繰り返されませんでした。

C#で同じ動作を得るには、次のように記述します。if (x!=0) { ... }

于 2010-07-15T11:37:30.207 に答える
0

CおよびC++ではint、、ポインター、およびその他のほとんどのタイプの。への暗黙の変換がありますbool

明確にするために、C#の設計者はそれを持たないことを選択しました。

だからと

int i = 1;
int* P = null;

if (i && p) { } // OK in C++

if (i != 0 && p != null) { }  // OK in C++ and C#
于 2010-07-15T11:34:50.383 に答える