#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