相关疑难解决方法(0)

byte + byte = int ...为什么?

看看这个C#代码:

byte x = 1;
byte y = 2;
byte z = x + y; // ERROR: Cannot implicitly convert type 'int' to 'byte'
Run Code Online (Sandbox Code Playgroud)

byte(或short)类型执行的任何数学运算的结果都隐式地转换回整数.解决方案是将结果显式地转换回一个字节:

byte z = (byte)(x + y); // this works
Run Code Online (Sandbox Code Playgroud)

我想知道的是为什么?它是建筑吗?哲学?

我们有:

  • int+ int=int
  • long+ long=long
  • float+ float=float
  • double+ double=double

那么为什么不呢:

  • byte+ byte=byte
  • short+ short= short

一点背景:我正在对"小数字"(即<8)执行一长串计算,并将中间结果存储在一个大数组中.使用字节数组(而不是int数组)更快(因为缓存命中).但是通过代码传播的大量字节转换使得它更加难以理解.

c# type-conversion

356
推荐指数
8
解决办法
6万
查看次数

在哪里可以找到C#语言规范?

我在哪里可以找到各种C#语言的规范?

(编辑:似乎人们投票失败,因为你可以'谷歌'这个,但是,我的初衷是用谷歌上没有找到的信息回答.我已经接受了最好的谷歌搜索结果,因为它们与没有支付VS的人)

c# visual-studio

12
推荐指数
2
解决办法
1889
查看次数

Why does string addition result is so weird?

public static void Main(string[] args)
{
     int num = 1;
     string number = num.ToString();
     Console.WriteLine(number[0]);
     Console.WriteLine(number[0] + number[0]);
}
Run Code Online (Sandbox Code Playgroud)

I expect the output of 1 and 11 but I'm getting 1 and 98. What am I missing?

c# string

5
推荐指数
2
解决办法
255
查看次数

标签 统计

c# ×3

string ×1

type-conversion ×1

visual-studio ×1