Tôi đã tìm thấy chương trình C này từ web:
#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 ở chế độ C89, nó sẽ in C89
và khi được biên dịch và chạy ở chế độ C99, nó sẽ 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 làm thế nào đối số thứ hai của printf
công việc trong chương trình trên?
Thủ thuật hay - nhưng nó thất bại với
—
usr2564301
gcc
. Nếu không std=c99
có cảnh báo, và nếu bạn bỏ qua nó, vẫngcc
sẽ diễn giải khi bắt đầu nhận xét (ah - bạn cũng phải sử dụng . Tôi có điều đó theo mặc định.)//
-pedantic
@Jongware Vâng, tôi đã nhận được
—
ikh
C89
rõ ràng std=c89
trong gcc 4.9.2.
Chỉ trong trường hợp ai đó tìm thấy điều này trong khi tìm kiếm cách để kiểm tra hỗ trợ C99; xin vui lòng sử dụng một cái gì đó như
—
Arkku
#if __STDC_VERSION__ >= 199901L
, không phải là //
mẹo bình luận. =)
Nó cũng in "C99" cho C11 ...
—
Lundin
//
nhận xét kiểu C ++ đã được giới thiệu trong C99.