寫循環語句,循環體部分理論上是不是可以都寫在for(;;)第二個分號後?
01-06
如果是這樣的話,那麼所有的循環都可以用一條for語句解決了?
如果可以,有哪些例子?如果理論可以,實際上不行,是出於什麼考慮?
只有你使用了gcc的私有擴展,你才能在兩個分號中間干所有你想乾的事情,譬如說:
正常循環:while(Shit())
{
Fuck();
}
for(;({bool shit = Shit(); if(shit) Fuck(); shit;}););
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引用傳遞和右值引用傳遞?