我想定義一個名爲Int_1_100_Type
的類型,它是一個integer
變量,範圍從1到100. 我該如何定義這個?
例如: 我傳遞此變量,它接受Int_1_100_Type
類型的變量的函數, funca(Int_1_100_Type Var1)
定義整數範圍C
Q
定義整數範圍C
11
A
回答
5
你不能,C沒有這樣的功能。你當然可以鍵入一個int:
typedef int int_1_100_Type;
但是沒有辦法限制它的範圍。在C++中,您可以使用此功能創建一個新類型,但我認爲很少有人會打擾 - 您只需要在使用該類型的函數中進行範圍檢查。
1
您不能在整數的範圍內放置這種限制。
你當然也可以typedef
也無妨:
typedef int int_1_100;
甚至更好:
typedef unsigned int int_1_100;
但沒有用C可以防止你寫:
int_1_100 x = 1000;
要實現的東西像這樣,你需要隱藏實現,但這會使初始化變得更加困難ize值(並且不可能在堆棧中完整地隱藏類型的值)。
0
0
c沒有辦法定義一個必須在特定範圍內的類型。但是,您可以檢查功能中的每個值,例如
int funca(int Var1)
{
assert(Var1 >= 1);
assert(Var1 < 101);
...
}
4
當然可以。所有你需要的是一點點的基於對象的C.
如果你這樣做在自己創建一個結構文件和一些成員
typedef struct s_foo {
int member;
} Foo;
Foo* newFoo(int input); // ctor
void get(Foo *f); // accessor
強制你的病情的突變/男星
文件,你也可以隱藏類的impl,你可以做oo-like C
+0
(Grr ...在評論中沒有格式化) 在最近幾個月裏,我學到了一個更好的方法。這有點複雜,但是這裏是簡短的版本。添加「newFoo」和「get」作爲struct Foo(包含函數指針的成員)的成員,並且您可以在單獨的C文件中實現「newFoo」和「get」作爲靜態函數,只要您有構建器對於Foo(這將提供封裝,實現隱藏(某個級別)和一個很好的抽象接口來創建Foo類型的對象) – shiva 2010-12-17 03:21:23
相關問題
- 1. $範圍未定義
- 2. 定義範圍值
- 3. C++:類範圍和定義順序
- 4. 從給定範圍內選擇整數
- 5. 模糊工具:預定義範圍內的整數變量?
- 6. 檢查自定義控件中的整數範圍
- 7. C++ 11,整數類型由範圍決定?
- 8. 整數範圍內的整數
- 9. C++函數範圍
- 10. 整數列表到範圍
- 11. 整數範圍到矢量
- 12. 分區整數爲範圍
- 13. Ruby中的整數範圍
- 14. Oracle SQL Group整數範圍
- 15. 整數範圍和上溢
- 16. 如何使用rxjs發出一定範圍的特定範圍內的整數
- 17. 命名函數定義範圍
- 18. 用戶定義的數目的範圍
- 19. 未定義jquery函數 - 範圍問題?
- 20. 嵌套函數定義和範圍(UnboundLocalError)
- 21. 定義數組隔離範圍javascript
- 22. 定義範圍,MEF與CompositionScopeDefinition
- 23. preg_replace自定義範圍
- 24. SublimeText2自定義範圍
- 25. 優化定義範圍
- 26. 如何定義$ ionicLoading範圍?
- 27. 定義動態範圍
- 28. JFreeChart域/範圍軸定義
- 29. 用範圍內定義
- 30. Angularjs:ReferenceError:範圍未定義
爲什麼downvote?僅僅因爲OP想要做的事情不能用C來完成,並不意味着這個問題不夠明確和合理。 – 2010-04-14 12:12:49
你爲什麼要這樣做?如果你的函數需要輸入一個特定的範圍,你可以對一個普通的'int'變量進行邊界檢查。 – tzaman 2010-04-14 12:16:32
@tzaman如果語言支持它(和一些),這是一個很好的功能,並避免在各處編寫範圍檢查。 – 2010-04-14 12:30:41