请问c语言三种循环语句是等价的吗

请问c语言三种循环语句是等价的吗

do-while(后测试语句):
   先执行do中的代码,再检测while中的条件语句。(循环体内的代码至少执行一次)

while(先测试语句):
    
先检测括号中的条件语句,再判断是否要执行循环体内的代码。(循环体内的代码可能一次也不会执行)

for(先测试语句):
     与while循环类似,只是括号中的条件语句增加了初始化代码。(循环体内的代码也可能一次也不执行)

while与for区别:
    int a=10;
    for(int i=0; i<a; i++) {
        printf("%d\n", i);
    }

    int a=10;
    int i=0;
    while(i<a) {
        printf("%d\n", i);
        i++;
    }

这两段代码是一样的
所以两者区别就在于   while的条件语句不能初始化,而for可以
    }