"324".toIntOption.isDefined // true
"à32".toIntOption.isDefined // false
"024".toIntOption.isDefined // true
出于所有意图和目的,struct istruct {
const int i;
};
const int i = 1;
struct istruct is = {1};
void *voidp_i = &i; // warning: discards 'const' qualifier
void *voidp_is = &is; // no warning
似乎被解释为const限定类型。如果是这样,那么最后一行发出警告也就没有意义吗?
答案 0 :(得分:2)
void *voidp_is = &is;
这里&is
的类型为struct istruct *
,没有const
限定词,只有成员i
是const
。请注意,由于正在修改const
,因此写入结构的((struct istruct *) voidp_is)->i=0;
成员(例如const int
)将导致未定义的行为。 (C2011,6.7.3 / 6)
void *voidp_i = &i;
在此示例中,&i
类型为int const *
,const
限定符在初始化时被丢弃。