解释代码片段 [英] explain the code snippet

查看:53
本文介绍了解释代码片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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; ?

AK

I 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆