หลาย printf อยู่ในครัวเป็นส่วนหนึ่งของ initialization,เงื่อนไขและปรับปรุง

0

คำถาม

อาจจะมีคนยอธิบายหน่อยได้มั้ยว่าทำไมมันรอยนิ้วมืออายุ 32 ปีและภาพรวมสงครามแย่งชิงยุทธศาสของทำลายบรรยากาศได้มากเลย

#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

คำตอบที่ดีที่สุด

8

ที่เหมาะสมระยะเยื้องจะทำให้มันชัดเจน:

#include <stdio.h>

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

ดังนั้นต่อไปนี้เกิดขึ้น:

  • a เป็นสามารถใช้ถอไป 1. ฉันไม่รู้ว่าทำไมตัวแปรนี้อยู่ก่อนตั้งแต่มันไม่เคยใช้ได้
  • for executes มัน initialization ข้อตกล printf("3");. นี่รอยนิ้วมือ 3.
  • for evaluates มันเป็นสัญลักษณ์แห่งสภาพ, printf("2"). นี่รอยนิ้วมือ 2 และจะคืนค่ากลับมาเป็นจำนวนของตัวอักษรที่ถูกพิมพ์ซึ่งก็คือ 1.
  • ตั้งเงื่อนไขคือ truthy มันไปอยู่ในร่างของเรื่อยๆ
  • ศพ executes return 0;. นี่จะกลับมาจาก main(),ดังนั้นตอนจบข่าวด้วย

ตั้งแต่เรื่องสิ้นสุดลงเราไม่เคย evaluates ที่ปรับปรุงเงื่อนไขการ printf("1")ดังนั้นมันไม่เคยรอยนิ้วมือ 1. และเราจะไม่เป็นสัญลักษณ์แห่งของอะไรทั้งสิ้น

2021-11-23 22:04:34
0

คุณรู้มั้ยว่าโปรแกรมเริ่มจะหนีจากทางด้านซ้าย'{'ของฟังก์ชันหลัก()ก็จะมีจุดจบอยู่ที่ถูกต้อง'}'ของฟังก์ชันหลัก()ถ้าไม่มีไม่มีที่สิ้นสุดด้วยนะ

เป็นรหัสของคุณแสดงของคุณดับคือต้องเข้าใจ flowchart ของสำหรับวงอยู่ในภาษา C.

อย่างที่คุณสามารถเห็นรูปแบบการสั่งงานของสำหรับวงคือ:
for (initializationStatement; testExpression; updateStatement)
{
    // statements inside the body of loop
    for loop body;
}
ยังไงสำหรับวงทำงาน?

1.ที่ initialization คำให้การเป็นประหารเพียงครั้งเดียว

2.งั้น,การทดสอบแสดงเป็นประเมินผลดดยใคร. ถ้าการทดสอบแสดงเป็นประเมินผลดดยใครจะผิดที่สำหรับวงคืออีกต่อไปแล้ว

3.อย่างไรก็ตามถ้าการทดสอบแสดงเป็นประเมินผลดดยใครกันเรื่องจริงการให้สอบสวนภายในร่างกายของสำหรับวงเป็นประหารชีวิตและปรับปรุงแสดงเป็นปรับปรุงเรียบร้อยแล้ว

4.อีกครั้งการทดสอบแสดงเป็นประเมินผลดดยใคร.

โพรเซสนี้เกิดขึ้นจนกว่าการทดสอบแสดงเป็นเรื่องจริงแล้ว เมื่อการทดสอบแสดงเป็นผิว terminates.

ดังนั้นสำหรับวง Flowchart

enter image description here

อย่างแรกเลยก็คือเอาของรหัสเป็นตัวอย่าง:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) break;
    return 0;
}
ส่งออก
32

1.initialization คือ "printf ("3")"แล้ว,พิมพ์:

3

2.การทดสอบสำนวน "printf("2")"นั่นเสมอเรื่องจริงดังนั้นพิมพ์:

2

3.สำหรับตัว "break"นั่นหมายความว่าตอนจบที่การประมวลผลของสำหรับเล่นวนซ้ำ

ไม่ประมวลผลข้อมูลสำนวน "printf("1")"

แล้วก็โปรแกรมกระโดดออกมาจากสำหรับวงและกระโดดไปยัง "return 0;",

งั้นจบการประหารชีวิตของโครงการนี้

งั้นการส่งออกคือ

32
อย่างที่สองใช้ของคุณเปลี่ยนรหัสเป็นตัวอย่าง:
#include <stdio.h>
int main(){
    for (printf ("3"); printf("2"); printf("1")) ;
    return 0;
}
ส่งออก
321212121212121212...121212...1212...

เหมือนๆกัน,

1.initialization คือ "printf ("3")"แล้ว,พิมพ์:

3

2.การทดสอบสำนวน "printf("2")"นั่นเสมอเรื่องจริงดังนั้นพิมพ์:

2

3.สำหรับตัว "`",ว่างเปล่าแล้วทำอะไรสักอย่างไม่ได้หรอก. ไปยังที่ปรับปรุงสำนวน

"printf("1")"

4.ที่ปรับปรุงสำนวน "printf("1")"แล้ว,พิมพ์

1

5.งั้นไปยังทดสอบสำนวน "printf("2")"นั่นคือ"2 ต่อได้.การทดสอบ

สำนวน "printf("2")",มันเรื่องจริงดังนั้นพิมพ์".เพราะว่า

ร่างของวงเป็น "`",ว่างเปล่าแล้วเสมอไปยังจากปรับปรุง

สำนวน "printf("1")" ต้องการทดสอบสำนวน "printf("2")",

นั่นคือทำไมหลังจากการพิมพ์"32"นั่นฟังก์ชันรอยนิ้วมือๆ

"12".และนั่นฟังก์ชันไม่เคยสิ้นสุดหยุดการพิมพ์"12"นอกจากคุณ

หยุดนั่นฟังก์ชัน.

ดังนั้นดังนั้นดังนั้นการส่งออกคือ

32121212...121212...121212...
Thirdly เอาของคุณเมื่อเร็วๆนี้เปลี่ยนรหัสเป็นตัวอย่าง:
#include <stdio.h>

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

    return 0;
}
ส่งออก
32

1.โปรแกรมเริ่มจะหนีจากทางด้านซ้าย'{'ของฟังก์ชันหลัก(),

นั่นเป็น initialization คำให้การของตัวแปรชั่วคราว

"int a=1;".

นั่นคำให้การกำหน"int"ป้อนไว้ชั่วคราวตัวแปร"a"และ

ตั้งค่าของมันเพื่อให้น้องสาวไปค้นหา"1"แต่มันไม่มีอะไรพิมพ์!

2.แล้วก็โปรแกรมไปยังที่สำหรับเรื่อยๆ

3.ที่ initialization คำให้การเป็น "printf ("3")"แล้ว,พิมพ์

"3"และ

ไปยังการทดสอบการแสดงออก

3

4.การทดสอบสำนวน "printf("2")"นั่นเสมอเรื่องจริงงั้น

พิมพ์"2"และไปยังที่สำหรับเรื่องร่างกายแสดงออก

2

5.ที่สำหรับเรื่องร่างกายสำนวน"return 0"การแสดง

"return 0"กลับมา'0'เพื่อฟังก์ชันหลัก()และจบ

การประมวลผลของหลัก()แต่การพิมพ์ไม่มีอะไรเลย

งั้นการส่งออกคือ:

32
สิ้นสุด ขอบคุณ!
2021-11-24 07:01:53

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

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

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่