tôi đã tìm thấy chương trình C này từ trang web:Làm thế nào để chương trình dưới đây xuất ra 'C89` khi được biên dịch ở chế độ C89 và `C99` khi được biên dịch ở chế độ C99?
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
Điều thú vị với chương trình này là khi nó được biên dịch và chạy trong chế độ C89, nó in C89
và khi nó được biên dịch và chạy trong C99 chế độ, nó in C99
. Nhưng tôi không thể tìm ra cách chương trình này hoạt động.
Bạn có thể giải thích cách đối số thứ hai của printf
hoạt động trong chương trình trên không?
Gợi ý: C++ - style '//' bình luận đã được giới thiệu trong C99. –
Mẹo hay - nhưng không thành công với 'gcc'. Nếu không có 'std = c99' bạn sẽ nhận được một cảnh báo, và nếu bạn bỏ qua nó,' gcc' sẽ * vẫn * giải thích '//' là khởi đầu của chú thích (ah - bạn cũng phải sử dụng '-pantic' Tôi có điều đó theo mặc định.) – usr2564301
@Jongware Vâng, tôi đã nhận 'C89' với' std = c89' rõ ràng trong gcc 4.9.2. – ikh