我面临一个棘手的(海事组织)问题。 我需要以最有效的方式比较两个MAC地址 。 在那个时刻,我唯一想到的只是一个小小的解决scheme – 一个循环,比较位置,所以我做了,但是面试官的目标是投射。 MAC定义: typedef struct macA { char data[6]; } MAC; 而function是(我被要求执行的): int isEqual(MAC* addr1, MAC* addr2) { int i; for(i = 0; i<6; i++) { if(addr1->data[i] != addr2->data[i]) return 0; } return 1; } 但是如前所述,他正在铸造。 意思是,以某种方式将给定的MAC地址转换为一个int,比较两个地址,然后返回。 但是,当铸造, int int_addr1 = (int)addr1; ,只有四个字节将被铸造,对吧? 我应该检查剩下的吗? 意义地点4和5? char和int都是整数types,所以铸造是合法的,但是在描述的情况下会发生什么?
Java警告的含义是什么? types安全性:从对象到列表的转换实际上是针对删除的types列表进行检查 当我尝试将对象转换为具有通用信息的types时,出现此警告,如下面的代码所示: Object object = getMyList(); List<Integer> list = (List<Integer>) object;
在Go中,如果你定义了一个新types,例如: type MyInt int 你不能然后将一个MyInt传递给一个期望int的函数,反之亦然: func test(i MyInt) { //do something with i } func main() { anInt := 0 test(anInt) //doesn't work, int is not of type MyInt } 精细。 但是,为什么同样不适用于function呢? 例如: type MyFunc func(i int) func (m MyFunc) Run(i int) { m(i) } func run(f MyFunc, i int) { f.Run(i) } func main() […]
让我们假设下面的表(例如几个内部联接语句的结果): id | column_1 | column_2 ———————— 1 | 1 | 2 | 2 | 2 3 | | 3 你可以从下面的例子中得到: select a.id, t1.column_1, t2.column_2 from a left join t1 on a.id = t1.id left join t2 on a.id = t2.id 现在,如果我想总结t1.column_1和t2.column_2如下 select a.id, t1.column_1, t2.column_2, (t1.column_1 + t2.column_2) as cumulated from a left join […]
协变和上传之间有什么区别,或者更具体地说,为什么他们有不同的名字? 我已经看到下面的例子被称为“上传”: string s = "hello"; object o = s; //upcast to 'string' to 'object' 鉴于以下我所见到的“协变”: string[] s = new string[100]; object[] o = s; IEnumerable<string> ies = new List<string>(); IEnumerable<object> ieo = ies; 现在,对我未经训练的人来说,协变似乎与上演一样,只不过它指的是collections的铸造。 (关于逆转和下转也可以做出类似的说法)。 这真的很简单吗?
我怎样才能把一个Java对象转换成一个布尔原语 我尝试像下面,但它不工作 boolean di = new Boolean(someObject).booleanValue(); 构造函数Boolean(Object)是未定义的 请指教。
我有: unsigned char *foo(); std::string str; str.append(static_cast<const char*>(foo())); 错误: invalid static_cast from type 'unsigned char*' to type 'const char*' C ++风格的正确方法是什么?
我需要在Java中将double赋值为int,但是数值必须总是舍入。 即99.99999999 – > 99
我真的没有find任何接近的答案… 相反的方式很简单,像str [0] 但我只需要投1个string… 喜欢这个: char c = 34; string(1,c); //this doesn't work, the string is always empty. string s(c); //also doesn't work. boost::lexical_cast<string>((int)c); //also return null
如果我有: void MyMethod(Object obj) { … } 我怎么能obj到什么样的实际types?