簡體   English   中英

C ++邏輯AND運算子

[英]C++ Logical AND operator

我有以下代碼

    for (int i = 0; i < 4; i++) {
            for (int j = 0; (j < 4) && (j != i); j++) {
                    cout << j << "," << i;
            }
            cout << "\n";
    }

輸出:

    (0,1)
    (0,2)(1,2)
    (0,3)(1,3),(2,3)

我希望它能打印除匹配對以外的所有對:

    (1,0)(2,0)(3,0) //without (0,0)
    (0,1)(2,1)(3,1) //without (1,1)
    (0,2)(1,2)(3,2) //without (2,2)
    (0,3)(1,3)(2,3) //without (3,3)

當for循環中的條件更改為(j < 4) && (j == i) // output: (0,0)它僅打印(0,0)而不是所有匹配的對。 我知道它與&&但是為什么它不顯示我期望的其他對呢?

我希望它能打印除匹配對以外的所有對

然后將(j < 4) && (j != i)替換為j < 4並在內部循環內添加if語句。

for循環一直運行到終止條件第一次變為假。 這就是為什么將其稱為終止條件。

for循環的工作方式是從初始化變量開始。 (初始化;例如i = 1)

然后,第二個命令是一個布爾語句,當為false時,它將暫停for語句。 (例如i <10)

第三個語句告訴for循環,當布爾語句為true時該怎么做。 (例如,增量i,i = i + 1)

但是,在您的情況下,您編寫了(j <4)&&(j!= i),因此只要您的j和i相等,就立即停止執行第二個嵌套的for循環!

您可以添加一個if語句來緩解此問題,但是您也可以使用continue語句,當值相等時(它將完全停止for循環),它將跳過其后的所有內容:

for(int i  = 0; i < 4; i++)
{
   for(int j = 0; j < 4; j++)
   {
     if(i == j) continue;
     cout << j << "," << i;
   } 
}

這是一個現場演示: https : //ideone.com/Q9oe4I

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM