ฉันพบโปรแกรม 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