簡體   English   中英

這個邏輯是如何工作的:k+=(x=5,y=x+2,z=x+y);

[英]How does this logic work: k+=(x=5,y=x+2,z=x+y) ;

這個邏輯是如何工作的: k+=(x=5,y=x+2,z=x+y);

它將如何給出結果 k == 22。當我初始化 k = 10 的值時

#include <stdio.h>
int main()
{
    int x,y,z,k=10;
    k+=(x=5,y=x+2,z=x+y);
    printf("value of k %d ",k); //why it will show value of k =22
    return 0;
}

在賦值語句的右側,使用了逗號運算符(從左到右依次兩次)。 它的值是最后一個操作數的值。 所以這個說法

k+=(x=5,y=x+2,z=x+y);

為了清楚起見,可以重寫為

k+=( ( x = 5, y = x + 2 ), z = x + y );

實際上等價於下面的一組語句

x = 5;      // x is set to 5
y = x + 2;  // y is set to 7
z = x + y;  // z is set to 12
k += z;     // k is set to 22

來自 C 標准(6.5.17 逗號運算符)

2 逗號運算符的左操作數被評估為 void 表達式; 在它的求值和右操作數的求值之間有一個序列點。 然后對右操作數求值; 結果有它的類型和值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM