标签: short

为什么"短期三十= 3*10"是一项法律任务?

如果在算术运算中short自动提升int,那么为什么:

short thirty = 10 * 3;
Run Code Online (Sandbox Code Playgroud)

short变量的合法分配thirty

反过来,这个:

short ten = 10;
short three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
Run Code Online (Sandbox Code Playgroud)

以及:

int ten = 10;
int three = 3;
short thirty = ten * three; // DOES NOT COMPILE AS EXPECTED
Run Code Online (Sandbox Code Playgroud)

不编译,因为如果没有按预期方式转换,则不允许int为a 赋值short.

关于数值文字有什么特别之处吗?

java short type-promotion

101
推荐指数
2
解决办法
6182
查看次数

Java的L号(长)规范

看来,当你在Java中输入一个数字时,编译器会自动将它读作一个整数,这就是为什么当你输入(long)6000000000(不在整数范围内)时,它会抱怨它6000000000不是一个整数.要纠正这个问题,我必须指明6000000000L.我刚刚了解了这个规范.

还有其他数字规格,如short,byte,float,double?这似乎是好事,因为(我假设),如果你可以指定你输入的数字是短的,那么java就不必抛出它 - 这是一个假设,如果我错了,请纠正我.我通常会自己搜索这个问题,但我不知道甚至会调用这种数字规范.

java specifications numbers short long-integer

91
推荐指数
4
解决办法
12万
查看次数

原始类型'短' - 用Java编写

我对shortJava中的原始类型有疑问.我使用的是JDK 1.6.

如果我有以下内容:

short a = 2;
short b = 3;
short c = a + b;
Run Code Online (Sandbox Code Playgroud)

编译器不想编译 - 它说它"无法从int转换为short"并建议我进行转换short,所以这样:

short c = (short) (a + b);
Run Code Online (Sandbox Code Playgroud)

确实有效.但我的问题是为什么我需要施放?a和b的值在short- 范围内 - 短值范围是{-32,768,32767}.我还需要在我想执行操作时进行投射 - ,*,/(我没有检查过其他人).

如果我对原始类型做同样的int事情,我不需要将aa + bb转换为int.以下工作正常:

int aa = 2;
int bb = 3;
int cc = aa +bb;
Run Code Online (Sandbox Code Playgroud)

我在设计一个类时需要添加两个类型为short的变量,并且编译器希望我进行转换.如果我用两个类型的变量做这个int,我不需要强制转换.

一句小话:原始类型也会发生同样的事情byte.所以,这有效:

byte a = 2;
byte b = 3;
byte c = (byte) (a + b); …
Run Code Online (Sandbox Code Playgroud)

java primitive casting short

76
推荐指数
5
解决办法
13万
查看次数

为什么在C和C++中算术运算之前必须将short转换为int?

从我从得到的回答这个问题,看来C++继承了这一要求,对于转换shortint从C.执行算术运算时,我可以挑你的大脑,以为什么这是用C首先介绍?为什么不做这些操作short呢?

例如(取自评论中的dyp建议):

short s = 1, t = 2 ;
auto  x = s + t ;
Run Code Online (Sandbox Code Playgroud)

x将具有int类型.

c c++ int short integer-promotion

70
推荐指数
4
解决办法
8650
查看次数

整数蓝色,短+ +短问题

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万
查看次数

java中的unsigned short

如何unsigned short在Java中声明值?

java unsigned types short

56
推荐指数
5
解决办法
9万
查看次数

三元运算符行为不一致

以下表达式是可以的

short d = ("obj" == "obj" ) ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

但是当您像下面一样使用它时,会发生语法错误

short d = (DateTime.Now == DateTime.Now) ? 1 : 2;
Run Code Online (Sandbox Code Playgroud)

无法将类型'int'隐式转换为'short'.存在显式转换(您是否错过了演员?)

任何人都可以解释为什么会这样吗?

在三元运算符中比较字符串到字符串和datetime到datetime之间有区别吗,为什么?

如果你能帮助我,我将不胜感激.

c# int casting short conditional-operator

51
推荐指数
2
解决办法
1535
查看次数

在Java中将short转换为byte []

如何short在Java中将(2个字节)转换为字节数组,例如

short x = 233;
byte[] ret = new byte[2];

...
Run Code Online (Sandbox Code Playgroud)

它应该是这样的.但不确定.

((0xFF << 8) & x) >> 0;
Run Code Online (Sandbox Code Playgroud)

编辑:

你也可以使用:

java.nio.ByteOrder.nativeOrder();
Run Code Online (Sandbox Code Playgroud)

发现以获取本机位顺序是大还是小.另外,以下代码取自java.io.Bits:

  • byte(array/offset)为布尔值
  • 字节数组到char
  • 字节数组要短
  • 字节数组为int
  • 要浮动的字节数组
  • 字节数组为long
  • 字节数组加倍

反之亦然.

java byte short

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

字节数组为短数组,并在java中再次返回

我有一些问题,将音频数据存储在一个字节数组中,将其转换为大端短数组,对其进行编码,然后将其更改回字节数组.这就是我所拥有的.原始音频数据存储在audioBytes2中.我使用相同的格式进行解码,而cos函数则使用减号.不幸的是,更改字节和短数据类型是不可协商的.

    short[] audioData = null;
    int nlengthInSamples = audioBytes2.length / 2;
    audioData = new short[nlengthInSamples];

    for (int i = 0; i < nlengthInSamples; i++) {
       short MSB = (short) audioBytes2[2*i+1];
       short LSB = (short) audioBytes2[2*i];
       audioData[i] = (short) (MSB << 8 | (255 & LSB));
    }

    int i = 0;
    while (i < audioData.length) {
        audioData[i] = (short)(audioData[i] + (short)5*Math.cos(2*Math.PI*i/(((Number)EncodeBox.getValue()).intValue())));
        i++;
    }

    short x = 0;
    i = 0;
    while (i < audioData.length) {
        x = audioData[i];
        audioBytes2[2*i+1] = (byte)(x …
Run Code Online (Sandbox Code Playgroud)

java arrays byte short type-conversion

43
推荐指数
5
解决办法
4万
查看次数

无法将类型'int'隐式转换为'short'

我编写了以下小程序来打印出Fibonacci序列:

static void Main(string[] args)
{
    Console.Write("Please give a value for n:");
    Int16 n = Int16.Parse(Console.ReadLine());

    Int16 firstNo = 0;
    Int16 secondNo = 1;

    Console.WriteLine(firstNo);
    Console.WriteLine(secondNo);

    for (Int16 i = 0; i < n; i++)
    {
        //Problem on this line                    
        Int16 answer = firstNo + secondNo;

        Console.WriteLine(answer);

        firstNo = secondNo;
        secondNo = answer;
    }

    Console.ReadLine();

}
Run Code Online (Sandbox Code Playgroud)

编译消息是:

无法将类型'int'隐式转换为'short'.存在显式转换(您是否错过了演员?)

由于涉及的所有内容都是Int16(简称),那么为什么会有任何隐式转换?更具体地说,为什么在这里失败(而不是最初为变量赋予int)?

非常感谢您的解释.

c# int short

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