ฉันพบโปรแกรม C นี้จากเว็บ:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
สิ่งที่น่าสนใจของโปรแกรมนี้คือเมื่อคอมไพล์และรันในโหมด C89 มันจะพิมพ์C89และเมื่อคอมไพล์และรันในโหมด C99 มันจะพิมพ์C99ออกมา แต่ฉันไม่สามารถคิดออกว่าโปรแกรมนี้ทำงานอย่างไร
คุณช่วยอธิบายว่าอาร์กิวเมนต์ที่สองของprintfงานในโปรแกรมข้างต้นได้อย่างไร
เคล็ดลับที่ดี -
—
usr2564301
gccแต่ก็ล้มเหลวด้วย หากไม่มีstd=c99คุณจะได้รับคำเตือนและหากคุณไม่สนใจก็gccจะยังคงตีความ//จุดเริ่มต้นของความคิดเห็น (อา - คุณต้องใช้-pedanticเช่นกันฉันมีสิ่งนั้นเป็นค่าเริ่มต้น)
@Jongware อืมฉันได้รับ
—
ikh
C89อย่างชัดเจนstd=c89ใน gcc 4.9.2
ในกรณีที่มีคนพบสิ่งนี้ในขณะที่ค้นหาวิธีการทดสอบสำหรับการสนับสนุน C99; โปรดใช้สิ่งที่ชอบ
—
Arkku
#if __STDC_VERSION__ >= 199901Lไม่ใช่//เคล็ดลับการแสดงความคิดเห็น =)
นอกจากนี้ยังพิมพ์ "C99" สำหรับ C11 ...
—
Lundin
//ความคิดเห็นสไตล์ C ++ ได้รับการแนะนำใน C99