Bạn tôi nói có thể viết chương trình C sẽ in "hello world" mà không cần IF/WHILE/FOR
và không có dấu chấm phẩy. Sau khi nghiên cứu tối thiểu tôi đã nói với cô ấy rằng điều đó là không thể. Có thể không?Xin chào thế giới trong C mà không có dấu chấm phẩy và không có câu lệnh IF/WHILE/FOR
Trả lời
Tôi đã cố gắng để tìm một "xách tay" cách ăn cắp một dấu chấm phẩy từ một tập tin bao gồm. Tính năng này hoạt động dưới Linux:
int main(int ac, char **av)
{
#define typedef
#define uint8_t a[printf("hello world\n")]
#include <stdint.h>
}
Điều này làm cho bản in typedef unsigned char uint8_t
trở thành bản in của tôi.
Một thủ thuật khác hoạt động là #define
cách mọi loại tiêu chuẩn stdint sao cho stdint.h
giảm xuống thành một loạt dấu chấm phẩy.
Cả hai loại này đều phẳng trên FreeBSD vì nó sử dụng loại trung gian riêng (như __uint8_t
) có nghĩa là xóa typedef không thành công trong ví dụ được trích dẫn và ngăn tôi loại bỏ thành công tất cả dấu chấm phẩy trong trường hợp khác.
Có vẻ như bạn có thể đánh cắp dấu chấm phẩy một cách rõ ràng từ tệp bao gồm. Có ai có thể cải thiện nỗ lực của tôi không?
+1 cho một cách tiếp cận rất độc đáo ... Tôi thích nó. – cdhowie
Không hoạt động trong Windows (Microsoft C compiler ver. 17) – ZhekaKozlov
#include
#include <stdio.h>
int main() {
switch (printf("Hello, world!\n")) {}
}
Nếu bạn của bạn nói "oh, bạn không thể sử dụng chuyển đổi một trong hai", sau đó:
#include <stdio.h>
int main(int argc, char *argv[printf("Hello, world!\n")]) {}
Tôi rách về việc có nên đề nghị này vì nó xoay quanh các từ ngữ chính xác của câu hỏi, nhưng:
#error hello world
(nếu không có gì khác, có lẽ nó sẽ ngăn chặn một followup "làm thế nào để bạn in hello world mà không main
" ...)
xin đừng quá khó khăn cho bản thân mình –
Vấn đề chính với kỹ thuật này là nó không thực sự tạo ra một chương trình chạy được. Tuy nhiên, nó chắc chắn là thông minh. Và một giải pháp thông minh không bao giờ là một giải pháp tồi. – cdhowie
@cdh nhưng bạn muốn nói "tôi vẫn là vua" –
Bạn cũng có thể workaround hạn chế như
#define X i##f
#define Y whi##le
#define Z f##or
#define W swi##tch
gì về:
#include <stdio.h>
int main(void *HAHA[printf("Hello world!\n")]) {}
không phải là C mát mẻ :)
bạn có thể giải thích những gì nó là leagal để chèn một cuộc gọi chức năng trong một khối khai báo tham số chức năng? Tôi khó có thể hiểu được điều đó. –
Tôi thực sự muốn biết ... :-) –
printf trả về một int (cũng có thể dự đoán được trong trường hợp này), nghĩa là định nghĩa đầy đủ của hàm, là int (void * HAHA [12]) { } Để tìm ra số ma thuật là 12, trước tiên bạn phải thực hiện lệnh printf. – Clearer
có thể viết chương trình C sẽ in "hello world" mà không có IF/WHILE/FOR và không có dấu chấm phẩy.
Dễ dàng. Lưu ý rằng C phân biệt chữ hoa chữ thường.
int main()
{
if (printf("Hello, World\n")){}
}
if
là từ khóa trong C, IF
thì không.
Tại sao bỏ phiếu xuống? Tôi đã tuân theo bức thư, cho chính trường hợp của câu hỏi. Nó có vẻ hơi khắc nghiệt khi bản thân câu hỏi là một trong những câu hỏi vô nghĩa "cách chúng ta có thể lạm dụng C" một cách hợp pháp. – JeremyP
@ JeremyP Tôi đã không bỏ phiếu theo cách khác, nhưng không ai thích luật sư quy tắc. –
@Dan Neely: Luật sư quy tắc là gì? Hãy trung thực, câu hỏi ban đầu không chính xác là một câu hỏi lập trình nghiêm túc, vậy tại sao mọi người lại lấy một cái lưỡi trong má trả lời nghiêm túc và bỏ phiếu xuống? – JeremyP
bạn có thể sử dụng câu lệnh switch để có được kết quả mong muốn của bạn, đây là mã dưới đây
#include<stdio.h>
int main()
{
switch(printf("hello world"))
return 0;
}
hy vọng điều này sẽ giúp bạn
- 1. JavaPOS Xin chào thế giới trong Java
- 2. Xin chào thế giới trong mod_wsgi
- 3. OGNL Xin chào thế giới trong Java
- 4. Linux Shellcode "Xin chào, Thế giới!"
- 5. Ruby on Rails: Xin chào thế giới
- 6. Dấu chấm phẩy có bắt buộc trong câu lệnh javascript không?
- 7. Haskell Xin chào thế giới, eclipse IDE
- 8. Mở MPI "Xin chào, Thế giới!" không biên dịch
- 9. Kivy xin chào thế giới không hoạt động
- 10. Xin chào thế giới với python tăng và python 3.2
- 11. Dấu tách câu lệnh JS có dấu phẩy
- 12. Dấu chấm phẩy ở cuối các câu lệnh if và các hàm trong C
- 13. tôi có nên đặt dấu chấm phẩy sau một câu lệnh PHP không?
- 14. Dấu chấm phẩy trong C++?
- 15. Biên dịch jruby "Xin chào thế giới" vấn đề
- 16. Dấu chấm phẩy Perl ở cuối câu lệnh
- 17. Dấu chấm phẩy Razor/JavaScript và dấu chấm phẩy
- 18. Có C# cho phép dấu chấm phẩy đôi; ; nếu có, có cách nào đặc biệt không?
- 19. Ghép nối nhiều câu lệnh bằng dấu phẩy và dấu hai chấm
- 20. chuỗi sang định dạng tiền tệ, không có dấu chấm câu (hoặc dấu phẩy)
- 21. Câu lệnh C# có thể được viết mà không có dấu ngoặc nhọn không?
- 22. "Xin chào, thế giới" của F # với 2 tệp fs
- 23. Dấu chấm phẩy có cần thiết trong SQL không?
- 24. mono gtk # - xin chào thế giới triển khai đến windows
- 25. URL có thể chứa dấu chấm phẩy không?
- 26. Tại sao không có loại dấu phẩy động không dấu?
- 27. Tại sao dấu chấm phẩy không được sử dụng sau câu lệnh if/else?
- 28. Tại sao Java không hiển thị lỗi cho dấu chấm phẩy kép ở cuối câu lệnh?
- 29. Dấu chấm phẩy tùy chọn trong C++
- 30. Đôi, dấu phẩy và dấu chấm
liên quan: http://stackoverflow.com/questions/2754493/hello -world-in-c-with-no-semi-colons – kennytm
Tại sao bạn muốn? Nếu bàn phím của bạn bị thiếu dấu chấm phẩy, bạn có vấn đề sâu hơn. –
Âm thanh như bạn bè của bạn vui chơi trong những cuộc thi C và PERL bị làm phiền? – winwaed