我有一个变量, value can 与0到1 有所不同,所以我想使用 bool用于保存此值。
in c 基于这个想法,我可以做什么操作,的类型 bool 和 second的类型是 int或float ?
例如,这个有效吗?
bool exists;
int value;
(...)
value += exists;
value *= exists;
如果是,直到 c 将这些值转换为其二进制拨款,并且在这些二进制数字上发现 operations 毫无问题,它是有效的使用操作数?
是的,这些操作存在,它们在C 标准第13.6节中找到(注意,bool
是一种积分类型,也使其成为算术类型):
对于每个三重(
的候选操作员功能L
,VQ
,R
),其中L
是算术类型,VQ
是volatile
或空的,R
是促进的算术类型,存在形式VQ L & operator=(VQ L &, R ); VQ L & operator*=(VQ L &, R ); VQ L & operator/=(VQ L &, R ); VQ L & operator+=(VQ L &, R ); VQ L & operator-=(VQ L &, R );
语义是在第5.18节中定义的:
表格
E1
op
=
E2
表达式的行为等效于E1 = E1
op
E2
,只是仅评估E1一次。在+=
和 - =中,E1
应具有算术类型,或者是指向可能由CV合并的完全定义的对象类型的指针。在所有其他情况下,E1
应具有算术类型。
和
如果左操作数不是类型,则该表达式被隐式转换为左操作数的CV UNQUALIFIED类型。
使用不同的操作数进行操作是有效的吗?
value += exists;
value *= exists;
是的,它是有效的,bool
类型被隐式转换为int
。它类似于您使用混合int
和short
操作数的操作员( , - )的操作。