Başlatma, koşul ve güncelleştirmenin bir parçası olarak For döngüsünde birden çok printf

0

Soru

Birisi bana neden 32 yazdırdığını ve bunun nasıl çalıştığına dair genel konsepti açıklayabilir mi?

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))

    return 0;
}
c loops printf
2021-11-23 21:56:07
2

En iyi cevabı

8

Doğru girinti onu daha net hale getirecektir:

#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1"))
        return 0;
}

Yani aşağıdakiler gerçekleşir:

  • a için başlatılır 1. Bu değişkenin neden var olduğunu bilmiyorum, çünkü hiç kullanılmadı.
  • for başlatma deyimini yürütür, printf("3");. Bu yazdırır 3.
  • for tekrarlama durumunu değerlendirir, printf("2"). Bu yazdırır 2 ve yazdırılan karakter sayısını döndürür; 1.
  • Durum doğru olduğu için, döngünün gövdesine girer.
  • Vücut yürütür return 0;. Bu geri dönüyor main() böylece döngü sona erer.

Döngü sona erdiğinden, güncelleme ifadesini hiçbir zaman değerlendirmeyiz, printf("1") bu yüzden asla yazdırır 1. Ve hiçbir şeyin tekrarını alamıyoruz.

2021-11-23 22:04:34
0

Biliyorsunuz, bir program, sonsuz döngü yoksa, main () işlevinin solundan ‘ { ’ , main () işlevinin sağından '}' ile bitmeye başlar.

Kodunuzun gösterdiği gibi, Zorluğunuz C dilinde for döngüsünün akış şemasını anlamaktır.

Gördüğünüz gibi, for döngüsünün sözdizimi şöyledir:
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
    for loop body;
}
For döngüsü nasıl çalışır?

1.Başlatma deyimi yalnızca bir kez yürütülür.

2.Daha sonra test ifadesi değerlendirilir. Sınama ifadesi false olarak değerlendirilirse, for döngüsü sonlandırılır.

3.Ancak, sınama ifadesi true olarak değerlendirilirse, for döngüsünün gövdesi içindeki deyimler yürütülür ve güncelleştirme ifadesi güncelleştirilir.

4.Yine test ifadesi değerlendirilir.

Bu işlem, sınama ifadesi yanlış olana kadar devam eder. Sınama ifadesi false olduğunda, döngü sona erer.

Yani, döngü Akış Şeması için

enter image description here

İlk olarak, kodunuzu örnek olarak alın:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
    return 0;
}
Çıktı
32

1.başlatma var "printf ("3")", sonra yazdır:

3

2.Test ifadesi "printf("2")"bu her zaman doğrudur, bu yüzden yazdır:

2

3.vücut döngüsü için "break"yani biten yürütülmesi için döngü,

güncelleştirilmiş ifadeyi yürütme "printf("1")"

ayrıca, program for döngüsünden atlar ve "return 0;",

ardından, bu programın yürütülmesini sonlandırın.

Yani, çıktı şu şekildedir

32
İkincisi, değiştirilen kodunuzu örnek olarak alın:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) ;
    return 0;
}
Çıktı
321212121212121212...121212...1212...

Benzer şekilde,

1.başlatma var "printf ("3")", sonra yazdır:

3

2.Test ifadesi "printf("2")"bu her zaman doğrudur, bu yüzden yazdır:

2

3.vücut döngüsü için""", boş, sonra hiçbir şey yapmayın. güncellenmiş ifadeye git

"printf("1")"

4.güncellenmiş ifade "printf("1")", sonra yazdır

1

5.ardından, test ifadesine gidin "printf("2")", yani " 2.Test

ifade "printf("2")", bu her zaman doğrudur, bu yüzden yazdır".Çünkü

döngünün gövdesi""", boş, sonra her zaman güncellenenden git

ifade "printf("1")"test ifadesine"printf("2")",

bu yüzden yazdırdıktan sonra "32"bu işlev sonsuz döngü yazdırır

"12".Ve bu özellik asla bitmez, yazdırmayı durdurur."12"tabi seni

bu işlevi durdurun.

Yani, Yani, Yani çıktı

32121212...121212...121212...
Üçüncü olarak, son değiştirilen kodunuzu örnek olarak alın:
#include <stdio.h>

int main()
{
    int a=1;
    for (printf ("3"); printf ("2"); printf ("1")) 

    return 0;
}
Çıktı
32

1.program main()işlevinin sol ‘{’ kısmından çalışmaya başlar.,

bu, Geçici değişkenin başlatma ifadesidir

"int a=1;".

Bu deyimi tanımlar "int"yazılan geçici değişken "a", ve

değerini "olarak ayarlar1"Ama bu hiçbir şey yazdırmıyor!

2.ardından, program for döngüsüne gider.

3.başlatma deyimi "printf ("3")", sonra yazdır

"3",ve

test ifadesine git.

3

4.Test ifadesi "printf("2")"bu her zaman doğrudur, yani

Yazıcı "2"ve döngü gövdesi ifadesine gidin.

2

5.for döngüsü gövdesi ifadesi "return 0", ifade

"return 0" dönüş '0'main () işlevine gidin ve

main () yürütülür, Ancak hiçbir şey yazdırılmaz.

Yani, çıktı şu şekildedir:

32
Sonlandırmak. Teşekkürler!
2021-11-24 07:01:53

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................