-1

重複の可能性:
Post Increment と Pre Increment の概念?

このシナリオで「if条件」がインクリメント/デクリメント演算子でどのように機能するか理解できません:

#include<stdio.h> 
void main() 
{ 
  int n=0; 
  if(n++) 
  { 
    printf("C-DAC"); 
  } 
  else if(n--) 
  { 
    printf("ACTS"); 
  } 
}

その出力は ACTS です。

IF条件で何が起こっていますか?

4

10 に答える 10

24

if (n++)nがゼロに等しくないかどうかを確認してからインクリメントしますn

else if (n--)nゼロに等しくないかどうかを確認してからデクリメントしますn

あなたの最初のifステートメントは真ではありません(nゼロであるため)、nインクリメントされ、else ifステートメントがチェックされ(nこの時点で1に等しい)、if (1)真であり、printf("ACTS")呼び出されます

于 2012-06-15T11:50:14.457 に答える
3

if(0 ++)==> if(0)else if(1--)==> else if(1)

したがって、ACTSが印刷されます

于 2012-06-15T12:23:16.897 に答える
3

n++とはどちらn--ポストインクリメント/デクリメント操作です。

つまり、変数の値は最初に現在の式で評価に使用され、その後変更されます (つまり、後でインクリメント/デクリメントされます)。

0ブール式では FALSE を意味します。nis initialであるため0、最初のテストはif失敗し、else句が評価されます。

その時点n1n++最初のテストで

printf("ACTS"); 

実行されます。

于 2012-06-15T11:54:13.240 に答える
2
int n=0; 
if(n++)

意味: チェックしてから 1 ずつ増やします。

int n=0; 
if(++n)

意味: 1 ずつインクリメントしてからチェックします。

于 2012-06-15T11:52:58.527 に答える
2

int は、ゼロでない限り、常に true を返します。ポストインクリメント演算子 は、チェック後に変数をi++インクリメントします。ipreincrement 演算子 を使用した場合++i、インクリメントはチェックの前に行われます。

于 2012-06-15T11:54:12.927 に答える
2

IFあなたの部品をチェックしている間、 nの値は「0」です。そして のためi++、' n ' は1ずつ増加します。したがって、nの値は1です。というわけで、partに入りながら、 nELSEの値が1なので、 partを実行します。そして、パーツの出力を取得しています。ELSEELSE

于 2012-06-15T11:55:52.080 に答える
1

iは0なので++i、評価前にi++インクリメントし、後にインクリメントします

于 2012-06-15T13:04:57.013 に答える
1

最初に条件をチェックしn != 0その後n の値をインクリメントします

于 2012-06-15T11:51:55.753 に答える
1

++and演算子は--値を変更するだけでなく、戻り値もあります。動作は位置によって異なります。++var増加して増加した値を返しますが、増加var++して古い値を返します。

于 2012-06-15T11:53:37.790 に答える
0

コンパイラは、コマンドを左から右に読み取ります。つまり、最初に条件が真か偽かをチェックします

if (n) 

その後、インクリメント/デクリメント

 n = n +/- 1
于 2012-06-15T11:52:32.303 に答える