สำหรับวิธีคิดของฉัน a สำหรับลูปถูกใช้เพื่อวนซ้ำในช่วงที่รู้จักหรือกำหนดได้
String[] names = //something;
for ( int i = 0; i < names.length; i++ ) { //do stuff }
ซึ่งเทียบเท่า (การกำหนดขอบเขตของฉันออกไป) เพื่อ:
String[] names = //something;
int i = 0;
while (i < names.length )
{
// do stuff
i++;
}
ในคำอื่น ๆ ที่for
ห่วงเป็นเพียง (มีประโยชน์อย่างมาก) สำหรับน้ำตาลประโยคที่ใช้กันทั่วไปwhile
สร้าง
อย่างไรก็ตามฉันเห็นโครงสร้างจำนวนมากfor(;;)
บนเว็บซึ่งเทียบเท่ากับการใช้งานจริงwhile(true)
อะไรคือเหตุผลสำหรับสิ่งนี้? เหตุใดจึงไม่มีที่สิ้นสุดสำหรับลูปที่ต้องการมากกว่าอนันต์ขณะที่ลูป
// ฉันยังเห็นหนังสือเรียนภาษาจาวาที่ไม่ได้ใช้งานในขณะที่ลูปเลย! นำไปสู่โครงสร้างมหึมาเช่น:
String input = getInput();
for( ; !inputIsValid(input) ; )
{
//redo;
}
while
และfor
ที่นี่และคำถามจะไม่เปลี่ยนแปลง while(true)
และfor(;;)
หมายถึงสิ่งเดียวกัน คุณเห็นได้ชัดว่ามีการตั้งค่าที่แข็งแกร่งสำหรับwhile
คนอื่น ๆ for
อาจจะมีการตั้งค่าที่แข็งแกร่งเท่าเทียมกันสำหรับ เป็นไปไม่ได้ที่จะบอกว่ามีความถูกต้องมากกว่าอีกอัน
for(;;)
สับสนเลย มันเป็นสำนวน C มาตรฐานซึ่งคุณจะบันทึกไว้ในส่วน 3.5 ของ K&R (2e) ฉันเข้าใจว่าคุณไม่ชอบมัน คุณควรเข้าใจว่าคนอื่นชอบมันอย่างชัดเจน (มิฉะนั้นคุณจะไม่เห็นมัน) มันอาจจะเป็นที่ยอมรับมากขึ้นหรือน้อยลงในภาษาอื่นที่ไม่ใช่ C; คุณได้ติดแท็กผู้ไม่เชื่อเรื่องภาษานี้ซึ่งจะลดความน่าจะเป็นของคำตอบที่ชัดเจน อีกครั้งฉันโหวตให้ปิดเพราะ Q ไม่สร้างสรรค์ หากฉันไม่พอใจฉันจะถูกตั้งค่าสถานะว่าเป็นการโจมตีแทนหรือเพิ่มเติมจากการปิด นั้นคือทั้งหมด.
wheeeeeeee { ... }