gpt4 book ai didi

.net - "val++"与 "val = val + 1"究竟有什么区别?

转载 作者:行者123 更新时间:2023-12-01 07:15:57 26 4
gpt4 key购买 nike

我创建了一个基本的控制台应用程序来进行这样的测试。

        short val = 32767;

val++;

Console.WriteLine(val);

这给了我 -32768 作为预期的结果
        short val = 32767;

val = val +1;

Console.WriteLine(val);

但这给了我这个错误

错误 1 ​​*无法将类型“int”隐式转换为“short”。存在显式转换(您是否缺少强制转换?)

我很好奇是什么原因造成的?

提前致谢,

最佳答案

short + short 的结果操作定义为 int .在第一种情况下,编译器会继续应用 (short)对增量的结果进行转换,但它不在第二个中。

short myShort = 1;
int resultA = myShort + myShort; // addition returns an integer
short resultB = myShort++; // returns a short, why?

// resultB is essentially doing this
short resultB = (short)(myShort + 1);

除了评论中Joel提供的链接,还可以引用 C# 4.0 language specification的7.3.6.2节列出了二进制数字提升的规则(涵盖形式 a = b + c; 的表达式)以及涵盖前缀和后缀运算符的 7.6.9。

关于.net - "val++"与 "val = val + 1"究竟有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386994/

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