[英]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.