-
什麼是線表? 單鏈表?
-
括號具有最高優先順序,首先計算,並按步驟順序排列。
+i) = 6
+i) = 7
+i) = 8
然後計算加法,i 的值為 8
如果將運算子放在第一位,則在計算表示式之前對表示式進行計算,如果將運算子放在後面,則在計算表示式之前對表示式進行計算。
看一下前面表示式的彙編**:
int i=5,j;
004113CE MOV DWORD PTR [I], 5 i 分配給 5
j=(++i)+(i)+(i);
004113D5 mov eax,dword ptr [i] 這 3 行取 i 和 +1 的值
004113d8 add eax,1
004113db mov dword ptr [i],eax // i= 6
004113de mov ecx,dword ptr [i] 這 3 行取值為 i 和 +1
004113e1 add ecx,1
004113e4 mov dword ptr [i],ecx // i= 7
004113E7 mov edx,dword ptr [i] 這 3 行取值為 i 和 +1
004113ea add edx,1
004113ed mov dword ptr [i],edx // i = 8
004113F0 Mov Eax, DWORD PTR [I] 這裡開始做 i + i + i
004113f3 add eax,dword ptr [i]
004113f6 add eax,dword ptr [i]
004113f9 mov dword ptr [j],eax
-
你真的試過嗎? 我的測試結果是24,我看了一下編譯**,發現我做了3次++i,最後j=i+i+i,結果是24
j=(++i)+(i)+(i);
004113c5 mov eax,dword ptr [i]
004113c8 add eax,1
004113cb mov dword ptr [i],eax
004113ce mov ecx,dword ptr [i]
004113d1 add ecx,1
004113d4 mov dword ptr [i],ecx
004113d7 mov edx,dword ptr [i]
004113da add edx,1
004113dd mov dword ptr [i],edx
004113e0 mov eax,dword ptr [i]
004113e3 add eax,dword ptr [i]
004113e6 add eax,dword ptr [i]
004113e9 mov dword ptr [j],eax
printf("%d",j);
看看彙編**,就很清楚了。
-
它等價於((+i)+(i))+i),前兩個i相當於各加兩次,結果是7,7加到1到8,所以結果是7+7+8=22
-
8+7+6...事實上,這在我的環境中執行了 24 次
-
F5 正在除錯。
按 ctrl+f5 執行
如果您使用的是 f5,請在程式結束時中斷一下,程式將在此時停止執行! 斷點為 f9
-
輸入格式錯誤,在輸入中,逗號後面是多餘的空格,還是中文逗號。
格式化輸入,必須嚴格遵循以下格式:2、3 回車符。
-
少年,你在 A 類析構函式中缺少乙個 }
a(){cout<<“乙個解構函式”《看,缺少乙個右括號。比如,缺少乙個右括號
結果同上。 a constructor 2
b constructor 2
x1=12x2=2
a desconstructor
-
程式在列印內容後立即關閉,您不妨新增乙個; 這將在程式結束之前等待您輸入乙個字元,您可以看到輸出。
-
程式中的 n 值是 for 迴圈中的值,一旦迴圈脫離迴圈,就無法確定 n 值。
-
它在書中寫錯了。
無限迴圈的原因是 j 被定義為無符號字元,所以它總是正數,而 for 迴圈不能跳出來,所以將 j 定義為 char 就足夠了,而不是 char。
但結果不是預期的10111,還是需要放的。
y<<=1;
相反。 y>>=1;
顯然,需要右移才能把握住每一點。
只需修改這兩個地方即可。
-
變數 j 0 255 的範圍始終大於 0
j 定義為 char
修改後的程式。
#include
void main()
unsigned char y=23,i=0,a[8];
char j;
doa[i]=y&1;
i++;y<<=1;
while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("");
-
您可以獲得您要求的結果!
#include
void main()
unsigned char y=23,i=0,a[8];
int j;改變! 改變! 改變! 改變! 改變! 改變! 改變! 改變! 改變!
doa[i]=y&1;
i++;y>>=1;改變! 改變! 改變! 改變! 改變! 改變! 改變! 改變!
while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
printf("");
-
3. 全部包括
using namespace std;
class test
void test::set_x(int x)int test::get_x()
void main()
test t;
cout:“輸出肯定是 6
如果你的 true 一直輸出 1,最好在 vc 下關閉重啟
我使用 vs2010