อาจจะมีคนยอธิบายหน่อยได้มั้ยว่าทำไมมันรอยนิ้วมืออายุ 32 ปีและภาพรวมสงครามแย่งชิงยุทธศาสของทำลายบรรยากาศได้มากเลย
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
อาจจะมีคนยอธิบายหน่อยได้มั้ยว่าทำไมมันรอยนิ้วมืออายุ 32 ปีและภาพรวมสงครามแย่งชิงยุทธศาสของทำลายบรรยากาศได้มากเลย
#include <stdio.h>
int main()
{
int a=1;
for (printf ("3"); printf ("2"); printf ("1"))
return 0;
}
ที่เหมาะสมระยะเยื้องจะทำให้มันชัดเจน:
#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
.return 0;
. นี่จะกลับมาจาก main()
,ดังนั้นตอนจบข่าวด้วยตั้งแต่เรื่องสิ้นสุดลงเราไม่เคย evaluates ที่ปรับปรุงเงื่อนไขการ printf("1")
ดังนั้นมันไม่เคยรอยนิ้วมือ 1
. และเราจะไม่เป็นสัญลักษณ์แห่งของอะไรทั้งสิ้น
คุณรู้มั้ยว่าโปรแกรมเริ่มจะหนีจากทางด้านซ้าย'{'ของฟังก์ชันหลัก()ก็จะมีจุดจบอยู่ที่ถูกต้อง'}'ของฟังก์ชันหลัก()ถ้าไม่มีไม่มีที่สิ้นสุดด้วยนะ
เป็นรหัสของคุณแสดงของคุณดับคือต้องเข้าใจ flowchart ของสำหรับวงอยู่ในภาษา C.
for (initializationStatement; testExpression; updateStatement)
{
// statements inside the body of loop
for loop body;
}
1.ที่ initialization คำให้การเป็นประหารเพียงครั้งเดียว
2.งั้น,การทดสอบแสดงเป็นประเมินผลดดยใคร. ถ้าการทดสอบแสดงเป็นประเมินผลดดยใครจะผิดที่สำหรับวงคืออีกต่อไปแล้ว
3.อย่างไรก็ตามถ้าการทดสอบแสดงเป็นประเมินผลดดยใครกันเรื่องจริงการให้สอบสวนภายในร่างกายของสำหรับวงเป็นประหารชีวิตและปรับปรุงแสดงเป็นปรับปรุงเรียบร้อยแล้ว
4.อีกครั้งการทดสอบแสดงเป็นประเมินผลดดยใคร.
โพรเซสนี้เกิดขึ้นจนกว่าการทดสอบแสดงเป็นเรื่องจริงแล้ว เมื่อการทดสอบแสดงเป็นผิว terminates.
#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...
#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