#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "mpi.h"
#define BUFFER_SIZE 65536
int main (int argc, char **argv) {
int int_buff[BUFFER_SIZE];
char char_buff[BUFFER_SIZE];
int n, myid;
int buflen, ntimes;
double starttime, endtime;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
buflen = 2;
if (myid == 0) {
int i;
for (i = 0 ; i++ ; i < 500 ) {
printf("Lala");
}
}
MPI_Finalize();
return EXIT_SUCCESS;
}
我正在使用mpiexec --hostfile hostfile -np 2 ping_pong
。什么都没有打印,但是当我更改循环顶部for(;;)
它有效时,为什么会这样?
答案 0 :(得分:5)
for
循环中的表达式错误。 for
loop的语法是
for(INITIALIZATION; CONDITION; INCREMENT/DECREMENT)
Statement
更改
for (i = 0 ; i++ ; i < 500 )
到
for (i = 0 ; i < 500; i++ )
答案 1 :(得分:3)
在您的代码中,您有:
for (i = 0 ; i++ ; i < 500)
你混淆了i ++(在每次迭代时该做什么)和i&lt; 500(迭代条件)。尝试:
for (i = 0 ; i < 500; i++)
答案 2 :(得分:1)
如其他答案所述,你的for循环颠倒了条件和增量部分。 有趣的是,这仍然是一段有效的代码。
您的代码实际执行的操作是第一次尝试进入循环时检查条件,执行增量(具有实际递增i
的副作用,但返回预递增值。增量部分只需执行与500的比较,结果将被忽略。
由于i
从0开始,你的循环条件评估为false并立即退出