gpt4 book ai didi

c# - 不明显的类型转换 : x = (x + xstep < xmax ? x + xstep : xmax)

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:48 25 4
gpt4 key购买 nike

给定以下代码:

    byte x, xmin, xmax, xstep;
x = (x + xstep < xmax ? x + xstep : xmax)

编译器告诉我

Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?) 

byte 到 int 的转换发生在哪里?为什么?

最佳答案

分解一下。我们有

sum = expression

Sum 是 byte 类型。表达的类型是什么?打破它。表达式是

summand1 + summand2

Summand1 是 byte 类型。 summand2 是什么类型?打破它。它是:

test ? consequence : alternative

测试是 bool 类型。替代方案是字节类型。结果是什么类型?打破它!它是:

summand3 + summand4

也就是字节+字节。 Byte + byte是int,所以consequence是int类型。

现在我们有足够的信息来计算出 summand2 的类型。 Consequence 是 int,alternative 是 byte,int 是这两种类型中更通用的。 (因为每个 byte 都可以转换为 int 但不是每个 int 都可以转换为 byte。)

因此summand2的类型是int。所以我们的总和等于一个字节加上一个整数。 Byte 加上 int 就是 int,因此我们把 int 赋值给 byte。这是显式转换,不是隐式转换。

关于c# - 不明显的类型转换 : x = (x + xstep < xmax ? x + xstep : xmax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438931/

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