相关疑难解决方法(0)

在Java中安全地将long转换为int

Java中最常用的方法是验证转换longint不会丢失任何信息?

这是我目前的实施:

public static int safeLongToInt(long l) {
    int i = (int)l;
    if ((long)i != l) {
        throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
    }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

java casting

467
推荐指数
7
解决办法
56万
查看次数

如果我为无符号变量赋值为负值会怎样?

我很想知道如果我给无符号变量赋一个负值会发生什么.

代码看起来有点像这样.

unsigned int nVal = 0;
nVal = -5;
Run Code Online (Sandbox Code Playgroud)

它没有给我任何编译器错误.当我运行程序时,nVal分配了一个奇怪的值!是否可以将某个2的补码值分配给nVal

c++ unsigned signed integer type-conversion

73
推荐指数
3
解决办法
8万
查看次数

如何在Java中使用Java进行工作?

这个问题不是关于如何将long正确地转换为int,而是当我们错误地将它转换为int时会发生什么.

所以考虑这个代码 -

   @Test
    public void longTest()
    {
        long longNumber = Long.MAX_VALUE;
        int intNumber = (int)longNumber; // potentially unsafe cast.
        System.out.println("longNumber = "+longNumber);
        System.out.println("intNumber = "+intNumber);
    }
Run Code Online (Sandbox Code Playgroud)

这给出了输出 -

longNumber = 9223372036854775807
intNumber = -1
Run Code Online (Sandbox Code Playgroud)

现在假设我做了以下更改 -

long longNumber = Long.MAX_VALUE - 50;
Run Code Online (Sandbox Code Playgroud)

然后我得到输出 -

longNumber = 9223372036854775757
intNumber = -51
Run Code Online (Sandbox Code Playgroud)

问题是,long的值如何转换为int?

java casting

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

从 unsigned long long 转换为 unsigned int

我四处搜寻,试图找到这个问题的答案,但找不到明确的答案。
我看到这个答案,他在旁注中写道:

对于无符号类型,规则有所不同;将有符号或无符号整数转换为无符号类型的结果是明确定义的。

那么什么是明确定义的行为呢?
当从 转换unsigned long long为 时unsigned int,是否有定义的行为?是不是只截掉32个MSB?(留给我 32 LSB)。
让我们假设它sizeof(unsigned int)在我的系统4中。 在不进行强制类型转换的情况下进行分配和使用强制类型转换进行分配时是否有不同的行为?sizeof(unsigned long long)8

c type-conversion

6
推荐指数
1
解决办法
3555
查看次数

如果我将一个double转换为int会发生什么,但double的值超出范围?

如果我将一个double转换为int会发生什么,但double的值超出范围?

让我说我做这样的事情?

double d = double(INT_MIN) - 10000.0;
int a = (int)d;
Run Code Online (Sandbox Code Playgroud)

什么是a的价值?这是不确定的?

c++ casting

5
推荐指数
1
解决办法
1652
查看次数

将int转换为float时在后台会发生什么

我有一些不明白如何逐步将int转换为浮动?假设我有一个二进制格式的带符号整数.而且,我想把它用手漂浮.但是,我不能.因此,CAn一个人告诉我如何逐步进行转换?

我在c中进行多次转换?喜欢;

  int a = foo ( );
  float f = ( float ) a ;
Run Code Online (Sandbox Code Playgroud)

但是,我还没弄清楚背景会发生什么.而且,为了更好地理解,我想手工完成转换.

编辑:如果你对转换了解很多,你也可以提供有关浮动到双转换的信息.而且,对于float到int

c floating-point int

5
推荐指数
1
解决办法
2796
查看次数

CS50 信用卡验证

#include <stdio.h>\n#include <cs50.h>

\n

int main(void)\n{\nlong cc = get_long("信用卡:"); // 获取输入

\n
long len = 0;           //intialized length\nlong x = cc;            // set 2nd variable = to cc to prevent manipulation of cc\n\nwhile (x != 0)     // length count loop while x is divisable loop will continue will be stored as len\n{\n    x = x / 10;\n    len++;\n}\n\n\nif ((len != 16) && (len != 15) && (len != 13))  //Checking for length to see if number matchs possible postive outcomes\n{\n …
Run Code Online (Sandbox Code Playgroud)

c cs50

-1
推荐指数
1
解决办法
1006
查看次数

标签 统计

c ×3

casting ×3

c++ ×2

java ×2

type-conversion ×2

cs50 ×1

floating-point ×1

int ×1

integer ×1

signed ×1

unsigned ×1