gpt4 book ai didi

c# - 8 位和 16 位整数的算术运算

转载 作者:行者123 更新时间:2023-11-30 20:24:51 35 4
gpt4 key购买 nike

我明白为什么这会产生编译时错误:

short x = 1;
short y = 2;
short z = x + y; // compile-time error

我明白了为什么它运行没有任何问题:

short x = 1;
short y = 2;
x += y; // all right, because of c# specs section 7.17.2

但我不知道为什么这也有效:

short x = (short)1 + (short)2;

我预计会遇到与第一个示例相同的编译时错误,但它运行成功...为什么?

最佳答案

由于您使用的是常量值,编译器可以检测到它是允许的,在编译时评估它,然后让它执行。生成的 IL 的计算结果与键入 short x = 3; 相同。

请注意以下内容也有效(出于同样的原因):

const short x = 1;
const short y = 2;
short z = x + y;

但这失败了:

const short x = 32000;
const short y = 32001;
short z = x + y;

请注意,这包含在 C# 语言规范 6.1.9 隐式常量表达式转换中:

  • int 类型的常量表达式 (§7.19) 可以转换为 sbyte、byte、short、ushort、uint 或 ulong 类型,前提是常量表达式的值在目标类型的范围内。

关于c# - 8 位和 16 位整数的算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25856789/

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