簡體   English   中英

在c中使用逗號運算符

[英]Using comma operator in c

我讀過逗號運算符用於分配表達式,並將正確的表達式提供給左值。

但是為什么這個程序在不使用括號時將左表達式分配給左值? 我正在使用 turbo c 編譯器。

int b=2;
int a;
a=(b+2,b*5);  // prints 10 as expected
a=b+2,b*5;    // prints 4 when not using parenthesis

還有以下作品:

int a =(b+2,b*5);

但這會產生錯誤:

int a =b+2,b*5;   // Error

我不明白為什么。

因為,運算符的優先級低於 of = 1,所以這...

a=b+2,b*5;

...實際上將被評估為...

a = b + 2;
b * 5;

int i = b + 2, b * 5; 有點不同,因為逗號在聲明語句中具有不同的含義,將不同的聲明相互分隔。 考慮一下:

int a = 3, b = 4;

您在這里仍然有逗號,但現在它分隔了兩個變量賦值聲明。 這就是編譯器嘗試從您的示例中處理該行的方式 - 但無法從b * 5行中獲得任何含義(它既不是賦值也不是聲明)。

現在, int a = (b + 2, b * 5)有所不同:您b + 2, b * 5表達式的值分配給int類型的變量a 第一個子表達式被丟棄,只剩下b * 5

暫無
暫無

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

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