解释代码片段 [英] explain the code snippet
问题描述
int main()
{
struct num {
int x,y;
} val [4] = {1,1,2,3,4,5,6,7};
struct num * ptr = val;
int i = 0;
for(; i< 4; i ++){
ptr-> x = ptr-> y,++ ptr ++ - > y;
printf("%d,%d",val [i] .x,val [i] .y);
}
}
什么是, do in ptr-> x = ptr-> y,++ ptr ++ - > y; ?
AK
Ajinkya写于05/11/07 13:34 ,:
int main()
{
struct num {
int x,y;
} val [4] = {1,1,2,3,4,5,6,7};
struct num * ptr = val;
int i = 0;
for(; i< 4; i ++){
ptr-> x = ptr-> ; y,++ ptr ++ - > y;
printf("%d,%d",val [i] .x,val [i] .y);
}
}
什么是, do in ptr-> x = ptr-> y,++ ptr ++ - > y; ?
它让人感到困惑。查找逗号运算符在
你的C教科书或参考文件。
-
Er ********* @sun.com
5月11日上午11点20分,Eric Sosman < Eric.Sos ... @ sun.comwrote:
Ajinkya写道于05/11/07 13:34,:
int main()
{
struct num {
int x,y;
} val [4] = {1,1,2,3,4,5,6,7};
struct num * ptr = val;
int i = 0;
for(; i< 4; i ++){
ptr-> x = ptr-> y,++ ptr ++ - > y ;
printf("%d,%d",val [i] .x,val [i] .y);
}
}
什么是,, do in ptr-> x = ptr-> y,++ ptr ++ - > y; ?
让人困惑。查找逗号运算符在
你的C课本或参考。
抱歉,先生,非常简单的问题。我在任何人之前得到了答案
张贴,很抱歉打扰你们。
>
-
Eric.Sos ... @ sun.com
On Fri,2007年5月11日10:34:29 -0700,Ajinkya写道:
int main()
{
struct num {
int x,y;
} val [ 4] = {1,1,2,3,4,5,6,7};
struct num * ptr = val;
int i = 0; < (; i< 4; i ++){$ /
ptr-> x = ptr-> y,++ ptr ++ - > y;
printf("%d,%d",val [i] .x,val [i] .y);
}
}
什么是,, do in ptr-> x = ptr-> y,++ ptr ++ - > y; ?
AK
我想这个程序正在证明运营商的优先级。
它显示
1.-具有比++更高的优先级,所以
++ ptr ++ - > y
表示:
++(ptr-> y);
ptr ++;
2.,具有最低优先级。所以
ptr-> x = ptr-> y,++ ptr ++ - > y;
的效果等于
ptr-> x = ptr-> y;
++ ptr ++ - > y;
虽然在内部,但它们是不同的。
int main()
{
struct num {
int x,y;
} val[4] = {1,1,2,3,4,5,6,7};
struct num *ptr = val;
int i=0;
for(;i<4;i++) {
ptr->x = ptr->y, ++ptr++->y;
printf("%d,%d ", val[i].x, val[i].y);
}
}
What does "," do in ptr->x = ptr->y, ++ptr++->y; ?
AK
Ajinkya wrote On 05/11/07 13:34,:int main()
{
struct num {
int x,y;
} val[4] = {1,1,2,3,4,5,6,7};
struct num *ptr = val;
int i=0;
for(;i<4;i++) {
ptr->x = ptr->y, ++ptr++->y;
printf("%d,%d ", val[i].x, val[i].y);
}
}
What does "," do in ptr->x = ptr->y, ++ptr++->y; ?It confuses people. Look up "comma operator" in
your C textbook or reference.
--
Er*********@sun.com
On May 11, 11:20 am, Eric Sosman <Eric.Sos...@sun.comwrote:Ajinkya wrote On 05/11/07 13:34,:
int main()
{
struct num {
int x,y;
} val[4] = {1,1,2,3,4,5,6,7};
struct num *ptr = val;
int i=0;
for(;i<4;i++) {
ptr->x = ptr->y, ++ptr++->y;
printf("%d,%d ", val[i].x, val[i].y);
}
}
What does "," do in ptr->x = ptr->y, ++ptr++->y; ?
It confuses people. Look up "comma operator" in
your C textbook or reference.Sorry sir, very trivial question. I got the answer before anyone
posted so sorry to disturb you all.>
--
Eric.Sos...@sun.com
On Fri, 11 May 2007 10:34:29 -0700, Ajinkya wrote:
int main()
{
struct num {
int x,y;
} val[4] = {1,1,2,3,4,5,6,7};
struct num *ptr = val;
int i=0;
for(;i<4;i++) {
ptr->x = ptr->y, ++ptr++->y;
printf("%d,%d ", val[i].x, val[i].y);
}
}
What does "," do in ptr->x = ptr->y, ++ptr++->y; ?
AKI guess this program is demonstrating operator priorities.
It shows
1.-have higher priority than ++, so
++ptr++->y
means:
++(ptr->y);
ptr++;
2. , have the lowest priority. So the effect of
ptr->x = ptr->y,++ptr++->y;
equals to
ptr->x = ptr->y;
++ptr++->y;
Though internally, they are different.
这篇关于解释代码片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!