将bool数据类型与整数值一起使用的优点是0和1对于true和false值有什么好处,使用效率会更高? 它在c和c ++等不同语言中有何不同?
答案 0 :(得分:3)
int
时, bool
在C中使用,没有优势 1 使用整数类型来表示C ++或现代C中的布尔值:
bool
有意义,int
不是:bool try_something();
int try_something(); // What does this return?
在C中通常有功能返回int
来表示成功或失败,但很多(大多数?)这些都不会在成功时返回1
而在失败时返回0
,它们遵循UNIX标准,如果成功则返回0
,如果出现错误则返回其他内容,因此您可以获得如下代码:
int close(int fd);
if (close(fd)) { /* Something bad happened... */ }
请参阅close手册,该手册会在成功时返回0
,在失败时返回-1
。对于新用户而言,此代码令人不安,您希望close
返回一些如果成功则返回的内容,而不是相反的内容。
int
中,则使用32位),以及在C ++中,std::vector<bool>
2 已经专门做到这一点,所以:std::vector<bool> bvec(8000); // Size ~ 1000 bytes (optimization of std::vector<bool>)
std::vector<int> ivec(8000); // Size ~ 32000 bytes (32-bits int)
1 如果以相同的方式使用它们没有任何好处(例如,通过bool b = f();
与int b = f();
或vector<bool>
上面的int
(如果您可以在bool
中替换int
而没有问题,那么请执行此操作)),但如果使用std::vector<bool>
使用按位运算存储多个布尔值,则这是另一个问题子>
2 请注意,这仅适用于std::array<bool, N>
,其他容器(例如 {
"cart_item": {
"productOption": {
"extensionAttributes": {
"configurableItemOptions": [
{
"optionId": "131",
"optionValue": 4
},
{
"optionId": "90",
"optionValue": 32
}
]
}
},
"productType": "configurable",
"qty": 1,
"quoteId": "88",
"sku": "ONE_TIME_PRODUCT"
}
}
)未优化,因为它们无法使用代理对象“代表”一点值。 子>
答案 1 :(得分:2)
这主要是一个风格问题,因此很难证明一种方法是正确的。如果x不为零,则C允许语法if(x == true)
执行条件。所以“真实”可能是一个陷阱,return true
并不总是意味着你的想法。另一方面,在return 1
这样的函数中,is_valid()
比bool
更清晰。 bool
可以提高内存效率,但这可能是一种错觉,出于效率原因,它通常被填充到四个字节。
mywdgt = openwidget("canvaswidget", 256, 256, true);
的主要问题,即风格问题,是
mywdgt = openwidget("canvaswidget", 256, 256, ALLOW_ALPHA);
显然意味着打开或创建一个小部件,它是一个画布,并且是256 x 256像素。但最后一个参数是什么?
bool
更加清晰。你知道参数是什么以及它做了什么
一瞥。因此,在函数签名中应该避免string StrRefNo = Request.QueryString["ref"];
string[] SMSid = StrRefNo.Split('$');
var ref = SMSid[0];
var smsLinkId = Convert.ToInt32(SMSid[1]);
DownloadsDbEntities db = new DownloadsDbEntities();
var data = (from d in db.SMSLink_Expiry
where d.RefNo == ref
&& d.SMSLink.ID == smsLinkId
select d).ToList();
if (data.Count > 0)
{
string ss="yes";
}
个参数,
改为使用define并说出标志的含义。
答案 2 :(得分:0)
bool - 内置的布尔类型。 bool可以包含值true
和false
。
因此,如果您的方案中boolean
类型有意义,例如,flag
或return
值表示yes/no
或success/failure
,你会考虑使用bool
。
但是如果你有多个这样的值,使用int(s)
会更合适。 bool
不合适,因为所涉及的值应限制在true/false
。
答案 3 :(得分:-1)
为了节省内存,强烈建议使用BOOL,例如,如果我们只是检查条件(true或false)或类似的东西。
Bool仅占用 1字节(通常最小可寻址大小)的内存,而整数可能需要2或4个字节或更多取决于编译器。
所以非常建议使用bool而不是整数来存储1或0.如果你能在更少的内存中做到这一点,为什么要浪费内存。
并且bool可以保证只有0或1的值。因此它适用于条件语句。