我看到this code,我看到這個_
號(內主())...
我從來沒有見過在使用這個標誌,並從來沒有讀過任何地方,
它是幹什麼用的呢?C中(Underscore)的用法是什麼?
回答
這只是一個標識符,它是有效的。您自己可以使用_
作爲標識符。
例如,你可以做到這一點
int _;
,使得_
int
類型的變量。
該代碼雖然揭示了一個根本性的問題,因爲它從程序中調用main()
。這樣做會引發未定義的行爲。
這意味着'_'被用來命名_some variable_?。 .. –
@MukulKumar是的,確切地說。 –
爲什麼會_it_ call main()? –
下劃線是C中變量和函數名稱中允許使用的字符之一。它不常用,特別是在名稱的開始或結尾處。由於這個原因,所以它有時是有用的:
- 在一個庫中定義一個變量名,這個變量名不可能與同一範圍內的另一個名字衝突;
- 編寫易混淆的代碼。
您的示例在第二個版本中使用它,例如通過定義一個簡稱爲_
的變量。
您正在查看C代碼混淆的示例。
程序員使用一個下劃線_
作爲main
函數的第二個參數的名稱。
他使用舊式聲明main()
有點相當於現代int main(int t, int _, char *a)
。
這原型main
是每C標準的所有版本均無效,但在某些系統上可以起到和main
函數實際上遞歸調用自己與預期類型的參數。該程序可以通過測試確定是否是主要調用t > 0
。這是不可移植的,因爲對於不同的原型可以傳遞不同的參數。
混淆C是一款針對高級C程序員的遊戲,可以達到驚人的複雜程度。
有一個全球性的競爭:The International Obfuscated C Code Contest。
很多world class programmers已經花費無數個小時拋光驚人的代碼寶石,其中包括Fabrice Bellard編寫的compiler for a subset of C,可以自行編譯。
另外還有一個無目標程序員的遊戲:代碼打高爾夫球。目標是制定最小的程序來解決一個給定的問題。 Stack Exchange有一個完整的網站致力於此活動:https://codegolf.stackexchange.com/。樂趣和快樂浪費更多時間。
https://www.quora.com/What-is-the-most-obfuscated- C代碼 - 你曾經見過.....看第4個答案(甜甜圈一個)...這太神奇了! –
@MukulKumar:確實可愛,第一個不太理想:'count'沒有被使用,'main'原型可以以很低的成本達到標準。感謝您的鏈接。 – chqrlie
- 1. 使用lodash/underscore .map()函數的原因是什麼?
- 2. c#console.writeline中{0}的用法是什麼?
- 3. C#中代表的用法是什麼?
- 4. C#中的等效語法是什麼?
- 5. 什麼是C#中的匿名方法?
- 6. 什麼是C#中的「靜態方法」?
- 7. C++中的(*)語法是什麼意思?
- 8. 什麼是C#中的方法組?
- 9. 什麼是C++中的非法刪除?
- 10. 這是什麼語法? C++
- 11. 什麼是用C
- 12. c中以下語法是什麼?
- 13. PHP中的Double Underscore?
- 14. 什麼是C++中的ScopeGuard?
- 15. 什麼是C#中的int?
- 16. C中的isatty()是什麼?
- 17. 什麼是C中的「-1L」?
- 18. 什麼是C#中的CreateNewAttribute?
- 19. 什麼是C#中的0xFF?
- 20. Objective-C中的'^'是什麼
- 21. C++中的`&|是什麼?
- 22. 什麼是C#中的[]?
- 23. c#中的sprintf是什麼?
- 24. 什麼是C#中的[....]
- 25. C++中的SAL_CALL是什麼?
- 26. 在c#中System.Security.Cryptography.RNGCryptoServiceProvider類中使用的算法是什麼?
- 27. 什麼是C中的通用庫?
- 28. 什麼是C中的前向引用?
- 29. C#中屬性的用途是什麼?
- 30. C中的移位運算符的確切用法是什麼?
難以理解代碼的混淆。 –
[C變量名稱定義中下劃線的原因是什麼?](https://stackoverflow.com/questions/8093336/what-is-the-reason-for-underscore-in-c-variable-name-definition) – jww