Thắc mắc vòng lặp for trong c

mình không hiểu đoạn code này ai giúp với

for (putchar(‘1’);putchar(‘2’); putchar(‘3’)){
putchar(‘4’);
break;
putchar(‘5’);
}

This post was flagged by the community and is temporarily hidden.

mấy cái putchar trong for ý ạ

This post was flagged by the community and is temporarily hidden.

klq nhưng sao vòng for gì mà kì cục vậy trời? :astonished: :astonished: :astonished:
mình tưởng vòng for nó phải theo cái cấu trúc for(khai báo;điều kiện;phép toán) chứ
VD:

for(int i=0;i<n;i++)

(bấm lộn nút reply :stuck_out_tongue: )

for (<1>; <2>; <3>)
{
    <4>
}

thì tương đương với

<1>
while (<2>)
{
    <4>
    <3>
}

vậy cái vòng for trên có thể viết lại là

putchar('1'); //<1>
while (putchar('2') /*<2>*/)
{
    //<4>
    putchar('4');
    break;
    putchar('5');
    
    //<3>
    putchar('3'); 
}

putchar('1') in 1
while (putchar('2')) in 2
putchar('4') in 4
break kết thúc vòng lặp.
=> kết quả in ra là 124

putchar giá trị trả về là ký tự nó in ra, putchar('2') trả về '2' hay có giá trị là 50. Trong C bất kì số nào có giá trị khác 0 nghĩa là true, còn bằng 0 nghĩa là false. Vì 50 khác 0 nên điều kiện trong vòng while được đánh giá là true, và vòng while chạy bất tận (bên trong vòng while có break nên thoát ra được)

3 Likes

cảm ơn bạn nhiều nha! :heart_eyes: mình hiểu rồi

This post was flagged by the community and is temporarily hidden.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?