2016-02-08 3 views
-5

Я новичок в C и не уверен, что мой цикл правильно преобразован.Преобразование цикла `while` в цикл` for`

while(a<b--) 
{ 
    do 
    { 
     d+=a++; 
    } 
    while(a!=c); 
    c+=a&b; 
} 

и это моя петля

for(; a<b ; b--) 
{ 
    d += a++; 
    for(; a != c ; a++) 
    { 
     c+= a&b 
    } 
} 

Я знаю, что это может быть легко и глупо, но я надеюсь, что вы поможете мне :) Thx

+2

Нет, 'б -' в неправильное время. – chux

+0

Просто запустите его и посмотрите, все ли у вас все те же ответы ... – csmckelvey

+1

@takendarkk: В языке, освещенном потенциалом для неопределенного поведения, такого как C, это плохой совет. – Olaf

ответ

2

Я думаю, что это должно быть что-то вроде этого :

for(;a<b--;){ 
for(d += a++ ; a != c ;) 
{ 
    d += a++; 
}  
c+= a&b 
} 

Вышеупомянутая логика работает!

Я побежал обе программы, как показано ниже, и они выдают одинаковый результат:

Program1: [получен из вашей 1 программы]

#include<stdio.h> 
int main(){ 

int a=10,b=10,c=10,d=10; 

while(a<b--) 
{ 
do 
{ 
    d+=a++; 
} 
while(a!=c); 
c+=a&b; 
} 
printf("a=%d\tb=%d\tc=%d\td=%d",a,b,c,d); 
} 

И выводит следующее:

a=10 b=9 c=10 d=10 

Аналогично измененная программа2: [по запросу]

#include<stdio.h> 
int main(){ 

int a=10,b=10,c=10,d=10; 

for(;a<b--;){ 
for(d += a++ ; a != c ;) 
{ 
d += a++; 
} 
c+= a&b; 
} 
printf("a=%d\tb=%d\tc=%d\td=%d",a,b,c,d); 
} 

И выдает то же самое:

a=10 b=9 c=10 d=10 
+0

Этот пост-инкремент 'a ++' сначала, затем дважды в цикле. Цикл 'while' вопроса ставит' a' только один раз в цикле. –

+0

Где условие a Krejw

+0

oops ... забыли, что ... wait –

Смежные вопросы