国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

c++ - Bagaimana untuk menangani situasi di mana lalai diletakkan di hadapan blok pernyataan suis
天蓬老師
天蓬老師 2017-07-06 10:35:10
0
3
2702
int c,i;
for (int i = 1; i < 3; ++i)
{
    switch (i)
    {
        default: c+=i;
        case 2: c++;break;
        case 4: c+=2;break;
    }
}
printf("%d\n", c);

Mengapa kod ini bersamaan dengan 3? Bukankah ini berlaku apabila lalai: c+=i; digunakan apabila i ialah 1 untuk kali pertama, dan kes 2: c++;break digunakan apabila i bersamaan dengan 2 untuk kali kedua? c=2 ialah output pada penghujungnya? Kenapa 3?

天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見證您的進(jìn)步~~

membalas semua(3)
女神的閨蜜愛上我

Pertama sekali, mari kita jelaskan beberapa perkara yang perlu diperhatikan dalam suis:

1.

switch 語句體由一系列 case 標(biāo)簽和一個(gè)可選 default 標(biāo)簽組成。 case 語句中的兩個(gè)常量表達(dá)式的計(jì)算結(jié)果不能為同一個(gè)值。 default 標(biāo)簽只能出現(xiàn)一次。 標(biāo)記語句不是語法要求,但如果它們不存在,switch 語句是無意義的。默認(rèn)語句(即default標(biāo)簽)無需顯示在末尾;它可以顯示在 switch 語句體的任何位置casedefault 標(biāo)簽只能顯示在 switch dalam penyata.
Dipetik daripada: Dokumentasi rasmi penyata Microsoft Visual Studio 2015 c++ Switch

2.

Skop casedefault本身就是標(biāo)簽,就是告訴編譯器從滿足這個(gè)標(biāo)簽開始向后執(zhí)行,之后不會(huì)再判斷其他標(biāo)簽的正確性,直到break語句或者switch pernyataan yang dinyatakan di atas tamat.

Untuk masalah ini

LANGKAH 1 : Apabila i=1, kerana i!=2&&i!=4, pelaksanaan bermula selepas teg default This When melaksanakan pernyataan c+=i; (kami kini menganggap bahawa pengkompil memulakan c kepada 0 untuk anda, anda mesti tahu bahawa tidak semua penyusun begitu mesra) nilai c selepas pelaksanaan ialah 1; LANGKAH 2i=1時(shí),由于i!=2&&i!=4故從default標(biāo)簽后開始執(zhí)行,此時(shí)執(zhí)行語句c+=i;(我們現(xiàn)在就假設(shè)編譯器幫你把c初始化為0,要知道并不是所有的編譯器都這么友好)執(zhí)行后c的值為1;
STEP 2:綜合上述1,2可知由于此時(shí)沒有碰到任何break語句也沒有到switch語句的作用域結(jié)束(因?yàn)檫@個(gè)default語句是放在第一個(gè)的)所以它接著向后執(zhí)行case 2后的語句(此時(shí)編譯器已經(jīng)不看滿不滿足case標(biāo)簽了)此時(shí)執(zhí)行語句c++;執(zhí)行后c的值為2;遇到break語句跳出switch語句。
STEP 3:當(dāng)i=2時(shí),由于i滿足case 2的情況,所以直接從case 2便簽后的語句開始執(zhí)行,此時(shí)執(zhí)行語句c++,執(zhí)行后c的值為3,遇到break語句跳出switch語句。
STEP 4:當(dāng)i=3時(shí),跳出for: Berdasarkan 1 dan 2 di atas, dapat dilihat bahawa kerana tiada pernyataan break ditemui pada masa ini dan skop pernyataan suis belum berakhir (kerana default Penyataan ini diletakkan dahulu), jadi ia kemudian melaksanakan pernyataan selepas case 2 ke belakang (pada masa ini, pengkompil belum memenuhi case Label) Pada masa ini, pernyataan c++ dilaksanakan nilai c selepas pelaksanaan ialah 2 apabila kenyataan break ditemui, iaitu tukar lompat keluar.
LANGKAH 3: Apabila i=2, memandangkan saya memenuhi situasi case 2, jadi ikuti terus kenyataan selepas case 2 nota Mulakan pelaksanaan Pada masa ini, pernyataan c++ dilaksanakan Selepas pelaksanaan, nilai c ialah 3. Apabila pernyataan break ditemui, suis . pernyataan dilonjak keluar.

??LANGKAH 4??: Apabila i=3, lompat keluar daripada gelung for dan keluarkan c=3 ???? (Proses di atas ialah kesimpulan yang saya buat menggunakan Visual Studio 2015 penyahpepijatan satu langkah; dan menggabungkan data) ?? ??
三叔

Apabila i=1, ia memasuki lalai: c=1 dan tiada patah, jadi teruskan padankan kes 2 dan dapatkan rehat c=2
Apabila i=2, ia sepadan dengan kes 2 dahulu dan masukkan kes 2: c=3 putus
Apabila i=3 Kitaran tidak bertahan.
Keluaran c ialah 3

三叔
var c = 0,i;
for (var i = 1; i < 3; ++i)
{
    switch (i) {
        default: c+=i;console.log('defalult:'+c);
        case 2: c++;console.log('case2:'+c);break;
        case 4: c+=2;console.log('case4:'+c);break;
    }
    console.log(i, c);
}
console.log('last:'+c);
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan