我很難理解為什么在 C 的 for 回圈中使用增量運算子與執行“變數” 1 的結果不同。第二種情況下的變數在回圈的每次迭代后根本不會被記住:
采取以下代碼:
#include <iostream>
int main(){
int a{0};
for (int i = 0; i < 5; i ){
std::cout << a;
}
return 0;
}
它按預期輸出:12345
但是,如果我將 a 替換為 1:
#include <iostream>
int main(){
int a{0};
for (int i = 0; i < 5; i ){
std::cout << a 1;
}
return 0;
}
我得到:11111
即使我將“a”變數設為靜態:
static int a{0};
它仍然輸出 11111。
為什么'a 1'在每次回圈后不保留其值?如果我想在每次迭代后保留它的值而不使用 (例如,使用像 * 2 這樣的另一個操作),我需要做什么?
uj5u.com熱心網友回復:
為什么'a 1'在每次回圈后不保留其值?
a 1是一個不為 分配任何東西 a的運算式。這a不會以任何方式受到影響。這意味著當您執行 just 時a 1, 的值a仍然是0(舊值)。
另一方面 a具有相同的效果:
v---------->assignment done here implicitly
a = a 1
在上面的運算式 a中, 的值增加了 ,1因此 的新值a就是 now 1。
uj5u.com熱心網友回復:
a等價于賦值a= a 1(或a = 1)。單獨的運算式a 1不會修改a.
C 將允許您撰寫std::cout << (a= a 1);.
uj5u.com熱心網友回復:
a 與 不同,a 1但與a=a 1。
有什么不同?
Well:
a 1 包含比 的值高一的值a。
a=a 1意味著,除此之外,這個值被分配給變數a,這意味著類似于“用它的值加一替換” 。a
a 這提供了以下可能性(我還展示了和之間的區別 a):
int a=3;
cout<<a 1; // output : 4. Value of 'a' equals 3.
cout<<a 1; // output : 4. Value of 'a' equals 3.
cout<<a 1; // output : 4. Value of 'a' equals 3.
int a=3;
cout<<a ; // output : 3. Value of 'a' becomes 4 after having shown it on screen.
cout<<a ; // output : 4. Value of 'a' becomes 5 after having shown it on screen.
cout<<a ; // output : 5. Value of 'a' becomes 6 after having shown it on screen.
int a=3;
cout<< a; // output : 4. Value of 'a' becomes 4 before showning it on screen.
cout<< a; // output : 5. Value of 'a' becomes 5 before showning it on screen.
cout<< a; // output : 6. Value of 'a' becomes 6 before showning it on screen.
uj5u.com熱心網友回復:
從概念上講,內置算術運算子喜歡 并* 評估其運算元,使用由此獲得的值執行相應的操作,并創建一個包含結果的臨時物件。
運算元,其中之一是 your a,只能讀取,不能寫入。當您考慮commutative 時,這一點更加明顯,也就是說,它的運算元可以在不影響結果的情況下交換:根據定義與 相同,并且顯然您不能將任何內容寫回立即值。a 11 a1
通常,您當然知道,=在 C 和 C 中用于將值寫入變數。C 以及 C 的祖先提供了將某些操作的結果寫回其運算元之一的快捷方式:它是運算子和賦值的組合=,例如a = 1. 像所有的賦值一樣,這個是一個運算式(即它有一個值),它具有操作和賦值后的變數值。像所有其他運算式一樣,您可以將其用作子運算式,即使這不是很常見:cout << (a = 1);將達到預期的效果(括號是必要的,因為賦值具有最低的運算子優先級)。因為遞增(和遞減)1 非常常見,所以 C 和 C 有一個快捷方式的快捷方式: a與 相同a =1,因此通常會撰寫cout << a;(作為不需要括號的副作用)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/519794.html
標籤:C 循环for循环增量
下一篇:python-從字典串列中提取值
