标签: casting

C++为什么我不能在结构中进行算术运算或转换?

我有一个游戏,我想计算一个玩摇滚纸剪刀的玩家对计算机的输赢(C++的随机数函数).为了跟踪玩家的胜利,损失以及与计算机的关系,我创建了这个结构(这是全局的):

struct human{
    short wins = 0;
    short losses = 0;
    short ties = 0;
};
Run Code Online (Sandbox Code Playgroud)

当我尝试使用short结构中的一个变量进行数学运算时会出现问题:

int main(){
    short totalPlays = 1;
    float winsPerc;
    outcome(totalPlays, winsPerc);
}
void outcome(short totalPlays, float& winsPerc){
    winsPerc = (static_cast<float>(human.wins) / static_cast<float>(totalPlays))* 100;
}
Run Code Online (Sandbox Code Playgroud)

在这两个函数中,我试图计算玩家获胜的百分比.但是,我的编译器似乎humanhuman.wins变量的一部分解释为一个类型.所以当然我试图改变human.winsshort human.wins无济于事.之后,编译器只表示类型short是意外的.由于这是如此模糊,我真的不知道我做错了什么.任何帮助将非常感谢!

c++ struct casting

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

从List中提取String数组

开发Java Android应用程序,但我认为这是一个直接的Java问题.

我有List声明如下;

List list= new ArrayList<String[]>();
Run Code Online (Sandbox Code Playgroud)

我想在循环中提取每个String [];

for(int i=0; i < list.size(); i++) {
   //get each String[]
   String[] teamDetails = (String[])list.get(i);
}
Run Code Online (Sandbox Code Playgroud)

这个错误,我猜它只是不喜欢我像这样投射String [].

任何人都可以建议从我的列表中提取String []的方法吗?

java casting

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

转换为int类型会产生负数

在FileStream中设置位置时遇到了一个奇怪的错误:"需要非负数.参数名称:值".

public string this[Int64 index]
{
    get
    {
        Byte n = Convert.ToByte(0);
        Byte[] Buffer = new Byte[255];
        mem.Position = (int)(index * 256); //Error occurs here
        mem.Read(Buffer, 0, Buffer.Length);
        Buffer = (from b in Buffer where b != n select b).ToArray();
        return System.Text.Encoding.Default.GetString(Buffer);
    }
    set
    {
        mem.Position = (int)(index * 256);
        value += String.Concat(Enumerable.Repeat("\0", 255 - value.Length));
        Byte[] Buffer = System.Text.Encoding.Default.GetBytes(value + "|");
        mem.Write(Buffer, 0, Buffer.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

作为一个长期,索引的值为8,388,608并且如预期的那样(索引*256)= 2,147,483,648,但是当我将其转换为int时,我得到相同的数字,只有负数.(2,147,483,648).为什么会这样?

目标框架是.NET 4,应用程序是为"任何CPU"构建的.

背景

如果有人想知道这段代码的用途,那么它是我写的一个模仿字符串数组的类的一部分,但是没有将值存储在内存中.MappedStringArray类允许我处理几乎任何大小的文件,而不会达到RAM的限制,因为它只知道文件中行的位置并根据需要读出它们.

c# casting

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

Java:将字符串转换为Int(未知来源)

在Java中我尝试将字符串值转换为整数,删除最后4个字符,所以我尝试了这样:

 String filename1="98597598684.txt";
 int id = Integer.parseInt(filename1.substring(0,  filename1.length()-4));
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误,我不明白为什么:

 java.lang.NumberFormatException: For input string: "98597598684"
at java.lang.NumberFormatException.forInputString(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

这可能很简单,但这让我疯狂1小时,任何想法?

java eclipse casting

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

是否有价值类型的'as'替代品?

我完全知道为什么 as不能用于值类型.但是,我所知道的唯一替代品是:

if (!(obj is MyValueType)) { // Type check #1
  // Exception or whatnot
}

var myValueType = (MyValueType)obj; // Type check #2
Run Code Online (Sandbox Code Playgroud)

但是,此代码执行两次类型检查,这会产生性能成本,as而引用类型的成本相同.

我的问题:对于值类型,是否有更好的性能机制/语法?

我能想到的唯一单一类型检查机制是try/catch,但这当然具有自己的性能成本,我尽量避免基于异常的编程.

c# casting value-type

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

转换为int时浮点数为何在C下面舍入?

在一次采访中,有人问我对以下代码有何看法:

#include <stdio.h>

int main()
{
    float f = 10.7;
    int a;
    a = f;
    printf ("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)

我回答了:

  • 当您将a更改floatint没有强制转换时,编译器将发出警告.

  • int由于您没有使用演员表,因此将具有垃圾值.

然后,他们允许我在在线编译器上运行程序.我不堪重负.我的假设都是错误的.编译器没有发出任何警告,并且int值为10.即使我改变了,float如10.9或10.3这样的值,答案也是一样的.即使放一个cast也没有改变结果.

有人能告诉我为什么会发生这种情况,结果会在什么情况下有所不同.

注意:在编译时,面试官告诉我不要添加gcc标记.


编辑:现在我已经明白,浮动没有四舍五入,答案将是10.但有人可以解释我为什么这样设计?转换为int时为什么浮动,在下面四舍五入?有具体原因吗?

c floating-point int casting type-conversion

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

如何将unicode字符串转换为int?

我的代码是:

<?php

   echo((int)("??")); //Number is 19

?>
Run Code Online (Sandbox Code Playgroud)

但是,输出为0而不是19.

php casting utf-8

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

将对象转换为通用接口

我有以下课程:

class MyObject { }
class MyObject2 { }

interface Parent<T>
{
    void DoSomething(T myObj);
}

class Child1 : Parent<MyObject1>
{
    public void DoSomething(MyObject1 myObj) { }
}

class Child2 : Parent<MyObject2>
{
    public void DoSomething(MyObject2 myObj) { }
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个返回父项的工厂方法,但是我得到以下转换错误

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

static Parent<object> Factory()
    {
        return new Child1();
    }
Run Code Online (Sandbox Code Playgroud)

这有什么解决方法吗?

.net c# casting c#-4.0

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

为什么这段代码需要投射?

我现在正在研究泛型,根据我的理解,我们使用泛型,所以我们可以避免/消除强制转换的需要,那么为什么在添加项目和链接列表时我必须进行强制转换?

public class ThisIsCode<E> implements Code{

    LinkedList<E> list = new LinkedList<>();

    public final void add(E... item) {
        List<E> thingie = new LinkedList<>();

        for (E i: item) {
            thingie.add((E) item);
        }

        list.add((E)thingie); 

    }
Run Code Online (Sandbox Code Playgroud)

我也必须在这个方法中进行转换,并在数组中?我不认为我应该将项目放入数组中,所以我有点困惑.

public void addSingle(Object item) {
    add((E[]) item);

}
Run Code Online (Sandbox Code Playgroud)

java generics casting linked-list variadic-functions

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

为什么要使用强制转换来实例化android中的视图

在实例化视图时有没有人知道投射的原因?

例如: TextView textView = (TextView) findViewById(R.id.textView);

android casting view

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