相关疑难解决方法(0)

整数蓝色,短+ +短问题

C#中的程序:

short a, b;
a = 10;
b = 10;
a = a + b; // Error : Cannot implicitly convert type 'int' to 'short'.

// we can also write this code by using Arithmetic Assignment Operator as given below

a += b; // But this is running successfully, why?

Console.Write(a);
Run Code Online (Sandbox Code Playgroud)

c# int types short

68
推荐指数
4
解决办法
1万
查看次数

char + char = int?为什么?

为什么char在C#中添加两个结果int

例如,当我这样做时:

var pr = 'R' + 'G' + 'B' + 'Y' + 'P';
Run Code Online (Sandbox Code Playgroud)

pr变量变成int类型.我希望它是string一个值为的类型"RGBYP".

为什么C#这样设计?是不是添加两个chars 的默认实现应该导致一个string连接chars,不是int

.net c#

62
推荐指数
7
解决办法
8926
查看次数

没有强制转换的情况下,两个字节变量的C#XOR将无法编译

为什么以下引发编译时错误:'无法将类型'int'隐式转换为'byte':

        byte a = 25;
        byte b = 60;

        byte c = a ^ b;
Run Code Online (Sandbox Code Playgroud)

如果我使用算术运算符,这将是有意义的,因为a + b的结果可能大于可以存储在单个字节中的结果.

然而,将其应用于XOR运算符毫无意义.这里是一个按位操作,它永远不会溢出一个字节.

在两个操作数周围使用转换:

byte c = (byte)(a ^ b);
Run Code Online (Sandbox Code Playgroud)

c# operators

31
推荐指数
1
解决办法
3万
查看次数

为什么两个字节的xor运算符产生一个int?

        //key & hash are both byte[]
        int leftPos = 0, rightPos = 31;
        while(leftPos < 16) {
            //possible loss of precision. required: byte, found: int
            key[leftPos] = hash[leftPos] ^ hash[rightPos];
            leftPos++;
            rightPos--;
        }
Run Code Online (Sandbox Code Playgroud)

为什么Java中的两个字节的按位运算会返回一个int?我知道我可以把它转回到字节,但它看起来很傻.

java byte casting numeric xor

29
推荐指数
2
解决办法
2万
查看次数

为什么ushort + ushort等于int?

以前我今天尝试添加两个ushorts,我注意到我必须将结果反馈给ushort.我认为它可能会成为一个uint(以防止可能的意外溢出?),但令我惊讶的是它是一个int(System.Int32).

是否有一些聪明的理由或者是因为i​​nt被视为'基本'整数类型?

例:

ushort a = 1;
ushort b = 2;

ushort c = a + b; // <- "Cannot implicitly convert type 'int' to 'ushort'. An explicit conversion exists (are you missing a cast?)"
uint d = a + b; // <- "Cannot implicitly convert type 'int' to 'uint'. An explicit conversion exists (are you missing a cast?)"

int e = a + b; // <- Works!
Run Code Online (Sandbox Code Playgroud)

编辑:就像GregS的回答所说,C#规范说两个操作数(在这个例子中是'a'和'b')应该转换为int.我对为什么这是规范的一部分的根本原因感兴趣:为什么C#规范不允许直接对ushort值进行操作?

c# types integer-arithmetic

28
推荐指数
3
解决办法
1万
查看次数

为什么C#的二元运算符总是返回int而不管它们的输入格式如何?

如果我有两个byte小号ab,怎么来的:

byte c = a & b;
Run Code Online (Sandbox Code Playgroud)

关于将byte转换为int会产生编译器错误?它这样做,即使我把一个显式类型转换前面ab.

另外,我知道这个问题,但我真的不知道它是如何应用的.这似乎是一个返回类型的问题operator &(byte operand, byte operand2),编译器应该能够像任何其他运算符一样进行排序.

c# byte operators

22
推荐指数
3
解决办法
6998
查看次数

将int添加到c#中的char以将其ascii值向上移动(就像在c ++中一样)

在c ++中,这段代码可以工作:

char c='a'; 
int r=2;
c+=r;
Run Code Online (Sandbox Code Playgroud)

这将做同样的事情c='c'.我怎样才能在c#中做同样的事情?

c# c++ integer character

16
推荐指数
1
解决办法
2万
查看次数

为什么C#中的字节减法需要强制转换?

我必须使用WinForms在VS2008 .net 3.5中使用以下代码:

byte percent = 70;
byte zero = 0;

Bitmap copy = (Bitmap)image1.Clone();
...

Color oColor = copy.GetPixel(x, y);
byte oR = (byte)(oColor.R - percent < zero ? zero : oColor.R - percent);
Run Code Online (Sandbox Code Playgroud)

当我离开(byte)最后一行代码的" "时,我收到编译器错误,说它"无法隐式转换类型int"到' byte'.如果一切都是类型byte并且byte是整数类型...那么我为什么需要演员?

.net c# byte integer casting

15
推荐指数
3
解决办法
9676
查看次数

为什么从Int16变量Int32中减去Int16参数的结果?

可能重复:
byte + byte = int ...为什么?

我有这样的方法:

 void Method(short parameter)
 {
     short localVariable = 0;
     var result = localVariable - parameter;
 }
Run Code Online (Sandbox Code Playgroud)

为什么结果Int32而不是Int16

.net c# variables

10
推荐指数
2
解决办法
2157
查看次数

这个表达有什么问题?无法将类型'int'隐式转换为'byte'

我收到错误"无法将类型'int'隐式转换为'byte'.存在显式转换(您是否错过了转换?)".不是byte + byte = byte吗?当我删除+rgb.Green它工作时我也注意到了

// rgb.Red, rgb.Green, rgb.Blue are byte types
// h, delta are double
rgb.Red = Convert.ToByte(Math.Round((h - 4) * delta)) + rgb.Green;

public struct RGBColor
{
    public byte Red { get; set; }
    public byte Green { get; set; }
    public byte Blue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

c#

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

c# ×9

.net ×3

byte ×3

casting ×2

integer ×2

operators ×2

types ×2

c++ ×1

character ×1

int ×1

integer-arithmetic ×1

java ×1

numeric ×1

short ×1

variables ×1

xor ×1