標籤:

寫循環語句,循環體部分理論上是不是可以都寫在for(;;)第二個分號後?

如果是這樣的話,那麼所有的循環都可以用一條for語句解決了?

如果可以,有哪些例子?

如果理論可以,實際上不行,是出於什麼考慮?


只有你使用了gcc的私有擴展,你才能在兩個分號中間干所有你想乾的事情,譬如說:

正常循環:

while(Shit())
{
Fuck();
}

邪惡gcc專有循環:

for(;({bool shit = Shit(); if(shit) Fuck(); shit;}););

洗心革面的程序員兼容古老gcc代碼的方法:

for(;([](){bool shit = Shit(); if(shit) Fuck(); return shit;})(););


本來呢,語言設計三種不同的循環寫法就是為了清晰和方便。

你們這樣整天想著奇技淫巧,簡單問題複雜化是要參加混亂代碼大賽嗎?


完全可以啊。比如這樣子:

#include &

int main(int argc, char** argv)
{
for (int i = 0; i &< 100; []{ printf("%d "); ++i; }()); return 0; }

可讀性看起來還不錯(逃

我用的是C++11。C和C++03就一時想不出來轍了。


寫成函數或者lambda。,不過那就感覺像在寫js了。。。。

問題不在於行不行而在於這樣做合不合適吧,說到底for不就是goto嘛。。。。


本來所有的循環就都能用 while 解決…… for 的出現就是為了增強可讀性……

你要是全部寫一起還哪來的可讀性……


for有什麼好呢,goto就是...


回答里有用lambda表達式的,如果循環體短,用逗號隔開就好


推薦閱讀:

map key是一個複雜結構,為什麼無法插入?
C++構造函數參數列表初始化與直接在函數內部初始化有何區別?
C++ 的 string 為什麼不提供 split 函數?
C++函數返回值拷貝問題?
operator=重載時,是否可以用一個按值傳遞版本取代按const引用傳遞和右值引用傳遞?

TAG:C編程語言 | C | CC |