我一直在使用! (邏輯否定)在C和其他語言,我很好奇,有誰知道如何使自己的!功能?或者有創造性的方法來製作一個?邏輯否定在C中如何工作?
回答
int my_negate(int x)
{
return x == 0 ? 1 : 0;
}
這是更好:) – 2010-02-23 16:20:39
不能相信我設法搞砸了:-p – 2010-02-23 16:21:50
所有的時間對我來說。我會寫點東西,但實際上意味着完全相反。 – 2010-02-23 16:26:05
!e
可以通過((e)?0:1)
如果你想重載一個操作者更換,適當的原型爲:
bool operator!();
我不超載運營商的大風扇,但一些人們喜歡他們的語法糖。編輯:這只是C++!把它放在你班級的定義中。
重載操作符可以很好地處理模板。只要確保你的'operator!()'與'!'具有相同的語義。 – 2010-02-23 16:30:13
如果你把它放在類定義中,它不需要任何參數並在*這個上運行。 bool operator!()const;您展示的原型可用於朋友操作員定義。 – 2010-02-23 16:38:22
對。良好的使用情況下,超載運營商。但是,如果你沒有那麼好的理由,那麼操作員通常不像一個有名的功能那麼直觀。雖然總是有例外。 – thebretness 2010-02-23 16:39:58
記住爆炸操作符'!'或用英語說法中的感嘆號,被編入程序語言中作爲否定的手段。
考慮這個三元運算符例如:
(some condition) ? true : false;
現在,如果被否定,三元運算符將這個
(some condition) ? false : true;
的公共區域,能夠得到一些程序員在一點一個合適的是strcmp
函數,對於相同的字符串返回0,對於兩個字符串1不相同:
if (strcmp(foo, "foo")){ }
當它實際上應該是:
if (!strcmp(foo, "foo")){ }
一般來說,當你否定,這是相反的,如圖三元運算符例子...
希望這有助於。
'strcmp'返回字符串相同的0;如果第一個字符串在第二個字符串之前,它將返回一個負數(不一定是-1),如果第一個字符串在第二個字符串之後,則返回一個正數(不一定是+1) - 其中的排序基於(無符號)組成字符串的字符。 – 2010-02-23 16:28:55
@Jonathan:正確,-1被認爲是真的.....因爲它是最大的無符號整數......即。 0xFFFF的...即。非零,無論何時-'ive或+'ive – t0mm13b 2010-02-23 16:36:36
您的答案狀態'strcmp函數,它返回0爲字符串是相同的,1爲兩個字符串不相同'。這是不正確的;它會爲兩個不相同的字符串返回非零值,而不是'如果字符串不同,則無條件地返回1'。 – 2010-02-23 18:42:47
C將所有非零值視爲「true」和零「false」。邏輯否定是通過檢查零來完成的。如果輸入正好爲零,則輸出一個非零值;否則,輸出零。在代碼中,您可以將其編寫爲(input == 0) ? 1 : 0
(或者將其轉換爲if
語句)。
當你問「如何做自己的方法」時,你的意思是你想編寫一個否定邏輯值的函數,或者你想定義感嘆號操作符的作用嗎?如果前者,那麼我上面發佈的聲明就足夠了。如果是後者,那麼恐怕這是C中不能完成的事情。C++支持運算符重載,如果這樣做是嚴格的必要條件,那麼我會建議在那裏尋找。
- 1. C#邏輯不會工作
- 2. 如何在C#中的兩個字節的邏輯&工作?
- 3. C#從工作邏輯中分離GUI
- 4. 邏輯不工作在perl
- 5. 析因邏輯如何工作?
- 6. javascript邏輯分配如何工作?
- 7. 邏輯或不能在JavaScript中工作
- 8. htaccess邏輯不能在vhost中工作
- 9. 邏輯&&在C
- 10. Prolog的否定與邏輯否定
- 11. 邏輯否定運算符「!」如何作品
- 12. JavaScript不按邏輯工作
- 13. 除數邏輯不工作
- 14. Android邏輯需要工作
- 15. 邏輯表達式在JavaScript中如何工作?
- 16. &&和!=的優先級如何在邏輯語句中工作?
- 17. 編解碼器邏輯如何在Android Play商店中工作?
- 18. C位操作邏輯(BITAND)
- 19. 如何在android數據綁定中使用邏輯操作?
- 20. 如何在Python中使用VIPS執行邏輯操作和邏輯索引?
- 21. 我的加法邏輯不工作在C#代碼
- 22. 登錄身份驗證邏輯不工作在C#.NET
- 23. 如何否定bash中的邏輯表達式
- 24. Django Rest框架工作,其中應用邏輯和如何
- 25. 在C中實現邏輯右移C
- 26. 工具來確定的相似邏輯的C函數和C++
- 27. 邏輯如果其他人不在Excel中工作VBA
- 28. 否則在邏輯順序
- 29. C++如果語句邏輯
- 30. C中的按位邏輯
當你談論「!方法」時,聽起來好像你可能在談論C++。你可以編寫一個在C中進行邏輯否定的函數,但是你不能覆蓋!運營商。 C++允許你編寫一個操作符! - 無論是方法還是非成員函數 - 但這是C++,而不是C. – Steve314 2010-02-23 16:23:13
這並不像我想的那樣容易找到標準部分的問答,如果輸入'!'返回1是0(與編譯器相關的任何其他非零值相反),但它是[C99標準6.5.3.3](http://stackoverflow.com/questions/7945950/is-logical-negation-of-零-O-編譯器從屬在-C)。只是FYI。 – HostileFork 2014-10-24 03:03:58