双重赋值/谓词是否可能? C

时间:2014-04-25 07:47:00

标签: c

如果下一个代码能够正常工作并且它的含义是什么,请告诉我吗?我在谈论这一行:if((a = b = c)) st - 已定义的结构。

st* a;
st* b;
st* c;
. // build the struct c correctly with malloc etc
.
.
if((a=b=c)) - the line

是否将struct c双重赋值为a和b(浅拷贝?)

谢谢

2 个答案:

答案 0 :(得分:3)

b = c返回b的值(在指定c之后),它被赋值给a。它们是指针,所以它只复制4或8个字节,而不是结构。

答案 1 :(得分:0)

这段代码行的意思相当简单,但总的来说我会说没用(没有违法行为)。

会发生什么:

b(作为指针)指向c的相同内存位置,a(作为指针)指向b的相同内存位置(因此c)

如果c为null,则返回false。

我会说这就像说

if(c!= 0)

在逻辑条件方面增加了指针a和b的赋值。