簡體   English   中英

返回(a)與返回a

[英]return (a) vs. return a

我在C和C ++代碼中都看到了我一直在關注的內容。

有什么不同?

沒有任何區別。

官方語法是return something; return; 當然它是一個關鍵字,而不是一個功能。

因此,您不應將其視為return( a ); 但作為return (a); 我認為區別是微妙但明確,括號不適用於返回,而是適用於。

((((a))))(a)a相同。

你也可以寫點像......

int x = (((100)));

你也可以寫點像......

printf("%d\n", (z));

正如有人在評論中所說,現在,使用C ++ 11(2011版C ++語言)新的運算符decltype 這個運算符引入了一個新的例子,其中(a)a不同,這是非常深奧的,有點偏離主題,但我添加這個例子只是為了完整性。

    int x = 10;
    decltype(x) y = x;   // this means int y = x;
    decltype((x)) z = x; // this means int& z = x;
    y = 20;
    z = 30;
    std::cout << x << " " << y << " " << z << std::endl;
    // this will print out "30 20 30"

正如我所說,學生們對此並不感興趣太過深奧,而且它只能用於支持至少部分C ++ 11標准的編譯器(如GCC 4.5+和Visual Studio 2010)。

這與使用typeid關鍵字形成鮮明對比:

int a;
std::cout << typeid(a).name() << std::endl; // will print "int"
std::cout << typeid((a)).name() << std::endl; // will print "int" !!!!

寫入return x表示程序員理解return含義。 return(x)表示程序員錯誤地認為return是一種功能。

return不是一個功能。

這更像是一種風格。 我個人不會在return語句中使用括號,除非它顯示操作順序。

例子

return a;
return (a || b);
return (a && (b || c));
return (a ? b : c);

暫無
暫無

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

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