我研究了一下
第一點:i++是在它所在的表示式計算完後再計算
例如:
#include"stdio.h"
voidmain()
{
inti=1;
inta;
a=(i++)*(i++)*(i++)*(i++)*(i++)*(i++);
printf("%d",a);
}
這個程式不管你有多少個i++計算結果都是1
第二點:優先順序高的先運算
a=i*(++i);
這個程式的結果是4
因為++i的優先順序更高所以他會先計算計算後i的值為2,++i的值也是2所以a=2(因為優先順序低所以已經為2了)*2=4;
第三點:同等級的運算是從前往後運算的並且是連線兩個後成為一個正確再往後
現在我們來看一下a=(i++)*(++i)*(i++)*(++i)*(i++);
先由於由於第一點我們可以把表示式該為a=i*(++i)*i*(++i)*i;
結果還是72所以第一點正確
再由於第二第三點先運算i*(++i)這裡運算結果是4i=2
然後{i*(++i)}*i結果為8i=2
然後{{i*(++i)}*i}*(++i)結果為24i=3
然後{{{i*(++i)}*i}*(++i)}*i結果為72i=3
最後執行所有的i++所以i的值為6a的值為72
現在來看一下
a=i*i*(++i);
這個的結果為2
先i*i值為1
再1*(++i)值為2
所以正確
下面
a=(i++)*(++i);
這個的結果是4也說的通
我也是研究出來的也不知道真正的是不是這樣的。。
我研究了一下
第一點:i++是在它所在的表示式計算完後再計算
例如:
#include"stdio.h"
voidmain()
{
inti=1;
inta;
a=(i++)*(i++)*(i++)*(i++)*(i++)*(i++);
printf("%d",a);
}
這個程式不管你有多少個i++計算結果都是1
第二點:優先順序高的先運算
例如:
#include"stdio.h"
voidmain()
{
inti=1;
inta;
a=i*(++i);
printf("%d",a);
}
這個程式的結果是4
因為++i的優先順序更高所以他會先計算計算後i的值為2,++i的值也是2所以a=2(因為優先順序低所以已經為2了)*2=4;
第三點:同等級的運算是從前往後運算的並且是連線兩個後成為一個正確再往後
現在我們來看一下a=(i++)*(++i)*(i++)*(++i)*(i++);
先由於由於第一點我們可以把表示式該為a=i*(++i)*i*(++i)*i;
結果還是72所以第一點正確
再由於第二第三點先運算i*(++i)這裡運算結果是4i=2
然後{i*(++i)}*i結果為8i=2
然後{{i*(++i)}*i}*(++i)結果為24i=3
然後{{{i*(++i)}*i}*(++i)}*i結果為72i=3
最後執行所有的i++所以i的值為6a的值為72
現在來看一下
#include"stdio.h"
voidmain()
{
inti=1;
inta;
a=i*i*(++i);
printf("%d",a);
}
這個的結果為2
先i*i值為1
再1*(++i)值為2
所以正確
下面
#include"stdio.h"
voidmain()
{
inti=1;
inta;
a=(i++)*(++i);
printf("%d",a);
}
這個的結果是4也說的通
我也是研究出來的也不知道真正的是不是這樣的。。