看板 Grad-ProbAsk 關於我們 聯絡資訊
#include <iostream> using std::cin; using std::cout; using std::endl; int A(); int B(); int main() { //懶XD A(); B(); return 0; } int A() { int a=5,b=10,c=15,n,m,p; c+=5; // c = 20 n=++a*--b; // a = 6 // b = 9 // n = 5*9 m=a+-b*c%b; // m = a+(-b)*c%b = 6+(-180)%9 = 6 + 0 = 6 p=a++*b+c/b*3; // p = a*b+c/b*3 = 6*9 + (20/9) *3 = 54 + 6 = 60 // a = 7 // 注意整數除法結果會是整數 cout<<"m = "<<m << ", n = " << n << ",p = " << p << endl; // m = 6, n = 54, p = 60 return 0; } int B() { int a[3][6]; int i,j; for(i=0;i<3;i++) for(j=0;j<6;j++) a[i][j] = (i+1)*(j+2); // 2 3 4 5 6 7 = a[0] // 4 6 8 10 12 14 = a[1] // 6 9 12 15 18 21 = a[2] int *p=&a[0][0]; // p 指向 a[0][0] 的位置, 也就是 2 的所在地 int *p0=a[0]; // p0 指向 a[0] 的位置, 也是 2 的所在地 // 實際上, p0 和 p 是一樣的 ( 不過 a[0][0] 和 a[0] 的 type 不同 ) int *p1=a[1]; // p1 指向 a[1] 的位置, 也就是 4 的地方 int *p2=a[2]; // p2 指向 a[2] 的位置, 也就是 6 的地方 cout << "*(p+2*5)= " << *(p+2*5) << ", *p1 = "<< *p1 << endl; // *(p+2*5) = *(p+10) = 12 // *p1 = 4 // 因為是連續的分佈 // 所以 a[0] 後面緊接的是 a[1] , a[1] 後面緊接的是 a[2] // 因此把 p 後面數 10個就是了 cout << "p2[6] = " << p2[5] << ", *(p0+5) =" << *(p0+5) << endl; // *p2[6] = 21 // *(p0+5) = 7 // p2[6] 相當於 a[2][6] = 21 return 0; } 有錯麻煩指正一下XD -- 人家可不是為了你才這樣做的哦! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.198.35.85