在另一个问题中,我刚刚发现了C智慧的这颗小珍珠:
#define for if (false) {} else for
Run Code Online (Sandbox Code Playgroud)
这导致MSVC为一个非常有效的声明吐出"常量表达式"警告:
for (int i = 0; i <= 10; i++) {...}
Run Code Online (Sandbox Code Playgroud)
我理解为什么 MSVC抱怨,因为它扩展到:
if (false) {} else for (int i = 0; i <= 10; i++) {...}
Run Code Online (Sandbox Code Playgroud)
我只是不明白为什么开发人员会使用那个小片段.有人有想法吗?
我经常看到如下代码:
Iterator i = list.iterator();
while(i.hasNext()) {
...
}
Run Code Online (Sandbox Code Playgroud)
但我写的是(当Java 1.5不可用或者每个都不能使用时):
for(Iterator i = list.iterator(); i.hasNext(); ) {
...
}
Run Code Online (Sandbox Code Playgroud)
因为
i在较小的范围内i外面使用?i声明在哪里?)我认为代码应该尽可能简单易懂,这样我才能制作复杂的代码来完成复杂的事情.你怎么看?哪个更好?
假设我有以下代码,有三个for循环来做某事.如果我将最外部的for循环更改为while循环,它会快速运行吗?谢谢~~
int length = 200;
int test = 0;
int[] input = new int[10];
for(int i = 1; i <= length; i++) {
for (int j = 0; j <=length - i; j++) {
for (int k = 0; k < length - 1; k++) {
test = test + input[j + k];
}
}
}
Run Code Online (Sandbox Code Playgroud) for()或while() - 哪个最好?
for (i=1; i<a; i++)
/* do something */
Run Code Online (Sandbox Code Playgroud)
要么
i=1;
while (i<a) {
/* do something */
i++;
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
为什么使用for循环而不是while循环?
我目前正在使用嵌入式c.我正在使用的软件是keil uvision.
所以我对你将使用哪个循环有疑问?两个循环完全相同.只要signal = 0,'i'将增加1.
首先,
for(;signal==0;)
{
i++;
}
Run Code Online (Sandbox Code Playgroud)
下一个计划:
while(signal==0)
{
i++;
}
Run Code Online (Sandbox Code Playgroud)
那么你会使用哪个循环?为什么?它们之间有什么区别?执行时间是否有任何差异?或者它纯粹基于您的偏好?
这是我的简单while (true)循环:
while (true)
{
int i = 0;
++i;
cout << i << endl;
if (i == 5) {
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以break;没有退出循环,输出是一个无限的1。
c ×4
for-loop ×4
while-loop ×3
java ×2
c++ ×1
c++-faq ×1
declaration ×1
definition ×1
embedded ×1
iterator ×1
terminology ×1