Tag: for loop

为什么比较一个无符号的Int> = 0一个“无意义的比较”?

我收到警告: Pe186“无符号int与零的无意义比较” 当我尝试编译以下代码时: for(clLoop = cpLoopStart; clLoop >= 0; clLoop–) { //Do something } 我不明白为什么。 我能理解,如果我正在寻找一个小于零的值,因为unsigned int永远不会是负数。 但我在这里寻找的是它是否等于零, unsigned int当然可以。 我甚至可以看到这个错误,如果在这个循环中我试图预先减少而不是后减量,但是情况并非如此。

for循环运行的时间比指定的多吗?

所以我的代码所做的是它接收一个数字列表并输出所有数字的连续滚动平均值。 我的scanf函数运行了一个额外的时间,所以我只是把它放入零。 我怎样才能解决这个问题? 这是我有的: #include #include #include int main(){ int i,n; double numbers[100]; double previous[100]; double x[100]; double mean[100]; double old_average[100]; double new_average[100]; printf(“Total amount of numbers: “); scanf(“%d\n”, &n); for (i=1; i<n+1; i++){ scanf("%lf\n", &numbers[i]); } old_average[1] = numbers[1] / 1; for (i=1; i<n+1; i++){ new_average[i] = (((old_average[i] * (i)) + numbers[i+1]) / (i+1)); […]

模式用于循环

我必须使用for循环打印以下模式。 我写了下面的代码,直到数字递增为止。 那我怎么能在另一半减少呢。 #include int main(void) { int x,r; for(r=1;r=r;x–) { printf(” “); } for(x=1;x<=r;x++) { printf("%d",x); } printf("\n"); } return 0; }

将此代码行转换为C.

我有以下代码行: for ( int i = index; i size; ++i ) //i,index and size are integers.al is an arraylist 当我在C中编译它时,我得到错误: ‘for’ loop initial declarations are only allowed in C99 mode 我不知道如何解决这个问题。 谢谢!

条件检入C中的循环

假设我有一个字符串“str”。 我的for循环如下: for(i=0;i<strlen(str);i++){ //do stuff } 问题:当检查条件时,i <strlen(str),是每次循环运行时计算的strlen(str)部分吗? 或者它被存储并且仅在第一次计算?

声明差异?

在使用循环之前声明变量和在循环中定义变量时有什么区别。 我在谈论这种情况 int i; for(i=0; i<100; i++); 和 for(int i=0; i<100; i++);

c openmp平行于平行区域内

我的问题就像这个。 但我想做点不同的事…… 例如,在我的并行区域内,我想在4个线程上运行我的代码。 当每个线程进入for循环时,我想在8个线程上运行我的代码。 就像是 #pramga omp parallel num_threads(4) { //do something on 4 threads #pragma omp parallel for num_threads(2) for(int i=0;i<2;i++){ //do something on 8 threads in total } } 那么,有没有办法将每个(4)运行线程“拆分”为两个(新)线程,所以在for循环中有更多(8)个线程正在运行?

使用-falign-loops选项时这是一个GCC错误吗?

我正在使用此选项来优化嵌入式架构中的for循环( 此处 )。 但是,我注意到当对齐需要添加多个nop指令时,编译器会生成一个nop后跟as-many-as-required零( 0000 )。 我怀疑它是我们编译器中的一个错误,但有人可以确认它不是GCC中的错误吗? 这是一段代码: __asm__ volatile(“nop”); __asm__ volatile(“nop”); for (j0=0; j0<N; j0+=4) { c[j0+ 0] = a[j0+ 0] + b[j0+ 0]; c[j0+ 1] = a[j0+ 1] + b[j0+ 1]; c[j0+ 2] = a[j0+ 2] + b[j0+ 2]; c[j0+ 3] = a[j0+ 3] + b[j0+ 3]; } 使用-falign-loops=8 (或与您的体系结构相关的任何数量,超过所需的最小比对)进行编译。 您可以根据需要添加或删除__asm__行以生成未对齐的循环体。

C表示循环分段故障

当我尝试在gcc上编译此代码时,我收到了分段错误错误。 #include #include #define N_TIMES 600000 #define ARRAY_SIZE 10000 int main (void) { double *array = calloc(ARRAY_SIZE, sizeof(double)); double sum = 0; int i; double sum1 = 0; for (i = 0; i < N_TIMES; i++) { int j; for (j = 0; j < ARRAY_SIZE; j += 20) { sum += array[j] + array[j+1] […]

理解C中的循环

我很难在C中找出以下简单的for循环代码。 int j=20; for(int i=0, j; i<=j ; i++, j–) printf("i = %d and j = %d \n",i,j); 打印输出为 i=0 and j=2 i=1 and j=1 为什么它不是以j=20开始而是打印j=2并且在j=1之后停止。 但是当我使用这段代码时 int j=20; for(int i=0, j=20; i<=j ; i++, j–) printf("i = %d and j = %d \n",i,j); 它开始正常 i=0 and j=20 upto … i=9 and j= 11 有什么东西我不见了吗?