หลังจากที่ได้อ่านคุณลักษณะที่ซ่อนอยู่และมุมมืดของ C ++ / STLบนcomp.lang.c++.moderated
ฉันรู้สึกประหลาดใจอย่างสมบูรณ์ที่ต่อไปนี้ข้อมูลที่รวบรวมและทำงานทั้งใน Visual Studio 2008 และ G ++ 4.4
นี่คือรหัส:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
เอาท์พุท:
9 8 7 6 5 4 3 2 1 0
ฉันคิดว่านี่คือ C เพราะมันใช้ได้ใน GCC เช่นกัน สิ่งนี้นิยามไว้ที่ไหนในมาตรฐานและมาจากที่ไหน
#define upto ++<
ลองจินตนาการถึงความเป็นไปได้ไวยากรณ์ใหม่ #define downto -->
, หากคุณรู้สึกชั่วร้ายคุณสามารถทำ#define for while(
และ#define do ) {
(และ#define done ;}
) และเขียนfor x downto 0 do printf("%d\n", x) done
โอ้มนุษย์ ...
++
หรือ--
ก่อน ...