Tag: for loop

为什么不在循环外部和内部声明具有相同名称的变量会产生错误?

{ int i; for(i=0;i<5;i++) { int i=10; printf("%d",i); } } 我有两个问题 为什么我没有重新申报错误? 为什么输出将是10 5次而不是10 1次?

while(getchar()!=’\ n’);

我有以下for循环,我提示用户输入一个4位数的针脚并按Enter键。 有人可以向我解释while循环真正在做什么,因为我不完全理解它。 //user input for pin for(i = 0; i < PIN_LENGTH; i++) { printf("Enter digit %d of your PIN: ", i); user_pin[i] = getchar(); while (getchar() != '\n'); //what is this line doing?? }

C中的循环 – ()或while() – 哪个最好?

for()或while() – 哪个最好? for (i=1; i<a; i++) /* do something */ 要么 i=1; while (i<a) { /* do something */ i++; }

对于使用CUDA的嵌套循环

我有一些问题需要嵌套循环,我必须从C / C ++转换为CUDA。 基本上我有4个嵌套循环,它们共享相同的数组并进行位移操作。 #define N 65536 // ———————————————————————————- int a1,a2,a3,a4, i1,i2,i3,i4; int Bit4CBitmapLookUp[16] = {0, 1, 3, 3, 7, 7, 7, 7, 15, 15, 15, 15, 15, 15, 15, 15}; int _cBitmapLookupTable[N]; int s = 0; // index into the cBitmapLookupTable for (i1 = 0; i1 < 16; i1++) { // first customer […]

为什么(;;)循环表现得像无限循环?

关于for(;;){}循环的最近问题的答案( 对于(;;)循环做什么 )似乎没有回答我的问题,所以我想我会尝试稍微改进一下这个问题。 特别是,除了知道没有条件的for循环是无限循环之外,我想知道为什么它们是无限循环。 在for (;_;){}的语句for (;_;){} , _是一个条件表达式。 我的第一个猜测是空表达式可能会计算为0或NULL 。 但如果你测试: for (;;){} 每个人都指出,这是一个无限循环。 for (;1;){} 是一个无限循环。 但是这些循环体都没有执行: for (;0;){} for (;NULL;){} 因此,空条件表达式似乎不会计算为0或NULL 。 所以,我的问题是: for (;;){}循环的行为是C计算表达式的方式的工件,还是只是一个特殊的实现定义的情况,因为从不执行的循环体不是很有用? 更新:在阅读了评论和答案后,我意识到我的问题并没有像过去那样明确。 我想问题是双重的: for(;;){}的行为是否严格地是C一般评估表达式的方式的结果,或者这种行为是否特定于C计算语句的方式? 事实certificate,这些替代方案中的第二种是这种情况,经过进一步的反思,这才有意义。 通常,缺少的表达式会触发编译器错误。 例如, while(){}将无法编译。 为什么for缺少条件表达式的for循环选择了这种行为? 我最初建议使用一个永不执行的主体的for循环并不是很有用。 但是对我而言,如果你错误地将条件从你的for语句中删除,根据标准的规则,你的程序可能会崩溃到一个无限循环。 这可能是令人惊讶的,但至少你知道它崩溃的地方。 但如果替代行为是规则,你的程序将跳过for的主体,可能会导致一些非常令人讨厌的惊喜谁知道在哪里。 因此,应用最小意外原则,无限循环行为更为可取。 正如@martin指出的那样,这只是for循环的合理默认值。 谢谢大家的意见和答案,并帮助我为自己澄清我的问题。

什么样的循环(;;)?

在torvalds / linux-2.6.git中找到 – > kernel / mutex.c第171行 我试图在谷歌上找到它,但无济于事。 for (;;)指示什么?

在循环内声明的变量

如果我要在循环内声明一个变量,那么在循环之外使用声明会更快吗? 程序是否在每次迭代时为n重新分配内存或在整个过程中使用相同的内存位置? for(int i=0;i<10;i++) { int n = getNumber(); printf("%d\n",n); } 与 int n; for(int i=0;i<10;i++) { n = getNumber(); printf("%d\n",n); }

C’for’循环中的多个条件

我遇到了这段代码。 我通常使用’&&’或’||’ 在for循环中分隔多个条件,但此代码使用逗号来执行此操作。 令人惊讶的是,如果我改变条件的顺序,输出会有所不同。 #include int main() { int i, j=2; for(i=0; j>=0,i<=5; i++) { printf("%d ", i+j); j–; } return 0; } 输出= 2 2 2 2 2 2 #include int main(){ int i, j=2; for(i=0; i=0; i++) { printf(“%d “, i+j); j–; } return 0; } 输出= 2 2 2 有人能解释一下原因吗? 它似乎只检查最后一个逗号分隔的条件。

为什么程序不执行最终的printf语句?

我无法弄清楚为什么程序控制没有到达第三个printf,就在for循环之后。 为什么不打印第三张printf ? 如果我将for循环更改为while循环,它仍然不会打印。 这是程序和输出: main() { double nc; printf (“Why does this work, nc = %f\n”, nc); for (nc = 0; getchar() != EOF; ++nc) { printf (“%.0f\n”, nc); } printf (“Why does this work, nc = %f”, nc); } 输出是: Why does this work, nc = 0.000000 test 0 1 2 3 4

什么是一次摆脱许多for循环的巧妙方法?

假设我需要在最内层循环内的某个事件发生时立即中断三个或四个嵌套for循环。 这样做的方法是什么? 我做的是使用这样的标志 : int i, j, k; int flag1 = 0; int flag2 = 0; for (i = 0; i < 100; i++) { for (j = 0; j < 100; j++) { for (k = 0; k < 100; k++) { if (k == 50) { flag1 = 1; flag2 = 1; break; […]