gpt4 book ai didi

使用按位赋值运算符的 C++ 类型转换

转载 作者:太空狗 更新时间:2023-10-29 20:08:29 27 4
gpt4 key购买 nike

我还没有找到一种在涉及按位赋值操作(例如 x |= y &z;)的情况下进行类型转换的方法。

例子:

#include <stdio.h>

typedef enum type1{
AA = 0,
BB = 1
} type1_e;

int main()
{

type1_e x,y;

y = type1_e(y | x); //working

y |= (type1_e)(y|x); //ERROR: as.cc:15: error: invalid conversion from ‘int’ to ‘type1_e’

}

最佳答案

运算符 | 产生一个 int 结果

type1_e(y | x)

y | x 是一个 int。您明确地将 int 转换为 type1_e


y |= (type1_e)(y|x);

相当于

y = y | type1_e(y | x);

您正在使用产生 int 结果的 operator |,然后尝试将其分配给 y,即 type1_e。没有转换就无法做到这一点。


要克服这个问题,您可以这样做:

y = type1_e(y | type1_e(y | x));

这与:

y = type1_e(y | y | x);

这与:

y = type1_e(y | x);

或:

  y = static_cast<type1_e>(y | x);

关于使用按位赋值运算符的 C++ 类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53811778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com