草庐IT

short-circuiting

全部标签

c++ - 'short' 在 C++ 中的用法

为什么对于任何数字输入我们更喜欢int而不是short,即使输入的整数很少。short的大小在我的x86上是2个字节,在int上是4个字节,分配它不是比int更好更快吗?或者我说没有用short是错误的? 最佳答案 CPU在处理其“native”整数大小时通常是最快的。因此,即使short可能小于int,int可能更接近CPU中寄存器的native大小,并且因此可能是两者中效率最高的。在典型的32位CPU架构中,加载32位值需要一个总线周期来加载所有位。加载16位值需要一个总线周期来加载这些位,加上将其中的一半丢弃(此操作可能仍会在

c++ - 如何在 C++ 中将 char* 转换为 unsigned short

我有一个char*name,它是我想要的短的字符串表示形式,例如“15”,需要将其作为unsignedshortunitId输出到二进制文件。此类型转换还必须是跨平台兼容的。这是正确的转换吗:unitId=unsignedshort(temp);请注意,我在理解二进制方面处于初级水平。 最佳答案 我假设您的char*name包含您想要的短的string表示,即"15"。不要将char*直接转换为非指针类型。C中的转换实际上根本不会更改数据(除了少数异常(exception))——它们只是通知编译器您要将一种类型转换为另一种类型。如果

c++ - C/C++ 将 int 转换为 short 和内联 asm(特定于 ARM)

这不是一个微不足道的问题。注意:我不需要意见或建议来使用纯asm。我实际上需要完成我正在谈论的事情:在将结果分配给shortint时获得没有此符号/零扩展optcode的内联asm。我正在处理一个将16位短裤用于许多功能的库,我正在优化它。我需要使用内联asm添加一些优化函数。问题是在很多地方函数的结果被分配给一个短整型。即,编译器生成uxth或sxtharm操作码。我的目标是避免这个问题并确保不会生成这个无用的操作码。首先,我需要定义我的优化函数来返回shortint。这样,如果它被分配给一个int或一个shortint,就没有额外的操作码来转换结果。问题是我不知道如何跳过编译器在我

c++ - 使用 Howard Hinnant 的 short_alloc 进行快速 move 分配

我正在使用HowardHinnant的漂亮的基于竞技场的小分配器,short_alloc.令我震惊的是,从vector进行的move分配可以使用通常的快速move分配(即获取目标的资源)来完成,该vector已经超出其arena,因此分配在堆上。然而,事实并非如此:typedefarenaarena_type;typedefshort_allocalloc_type;typedefstd::vectorvec_type;arena_typearena1,arena2;vec_typevec1(alloc_type(arena1)),vec2(alloc_type(arena2));ve

linux - 在 tcp "long"连接和 "short"连接之间选择内部服务

我有一个应用程序,Web服务器将一些请求重定向到后端服务器,后端服务器(Linux)将对Web服务器进行复杂的计算和响应。对于web服务器和后端服务器之间的tcpsocket连接管理,我认为有两种基本策略:“短”连接:即每个请求一个连接。这对于套接字管理和简化整个程序结构来说似乎非常容易。接受后,我们只需要一些线程来处理请求,最后关闭这个套接字。“长”连接:即对于一个tcp连接,可以有多个请求一个接一个。似乎这种策略可以更好地利用套接字资源并带来一些性能提升(我不太确定)。但是这似乎比“短”连接带来了很多复杂性。例如,由于现在socketfd可能被多线程使用,所以必须涉及到同步。还有更

java - 用 Short 和 int 重载

为什么这段代码会打印int?publicstaticvoidmain(String[]args){shorts=5;A(s);}publicstaticvoidA(inta){System.out.println("int");}publicstaticvoidA(Shorta){System.out.println("short");} 最佳答案 因为向上转换为int是在Java1.0版本中,而自动装箱是在5.0版本中添加的。更改行为会破坏为旧版Java编写的代码。但是,像这样混合类型表明您的设计存在问题,这是您在益智游戏中唯一会

java - 有人在实际应用程序中使用 short 和 byte 原始类型吗?

自2004年以来,我一直在使用Java进行编程,主要是企业和Web应用程序。但我从未使用过short或byte,除了一个玩具程序,只是为了了解这些类型的工作原理。即使在100次的for循环中,我们通常也会使用int。我不记得我是否遇到过任何使用byte或short的代码,除了一些公共(public)API和框架。是的,我知道,在内存节省确实很重要的情况下,您可以使用short或byte来节省大型数组中的内存。有人愿意练习吗?或者它只是书中的内容。[已编辑]使用byte数组进行网络编程和套接字通信是很常见的用法。谢谢,达伦,指出这一点。现在做空怎么样?瑞安,举了一个很好的例子。谢谢,瑞安

java - 如何指定一个常量是byte还是short?

对于long数据类型,我可以在一个数字后面加上L,让编译器知道它是long。byte和short呢?作为动机,以下会产生类型不匹配错误:Lista=Arrays.asList(1,2,3,4); 最佳答案 您实际谈论的是整数literal(1)与长literal(1L).在Java中实际上没有短字面量或字节字面量这样的东西。但它通常并不重要,因为存在从整数文字到类型byte、short和char。因此:finalbyteone=1;//notypecastrequired.仅当文字在要求的范围内时才允许隐式转换。如果不是,则需要进行

android - Toast LENGTH_LONG 和 LENGTH_SHORT 的持续时间是多少

我需要以毫秒(ms)为单位的LENGTH_LONG和LENGTH_SHORT的确切持续时间。我还需要知道带有LENGTH_LONG的Toast消息的持续时间在任何手机和任何API版本中是否具有相同的持续时间。有人知道定义的持续时间在哪里吗?,我的意思是在ms中定义。我知道LENGTH_LONG是一些值为1的intconst。但我找不到实际定义的持续时间在哪里。 最佳答案 已回复here.就像你提到的Toast.LENGTH_SHORT和Toast.LENGTH_LONG不是以毫秒为单位,而是0或1。实际持续时间为:privatest

android - Toast LENGTH_LONG 和 LENGTH_SHORT 的持续时间是多少

我需要以毫秒(ms)为单位的LENGTH_LONG和LENGTH_SHORT的确切持续时间。我还需要知道带有LENGTH_LONG的Toast消息的持续时间在任何手机和任何API版本中是否具有相同的持续时间。有人知道定义的持续时间在哪里吗?,我的意思是在ms中定义。我知道LENGTH_LONG是一些值为1的intconst。但我找不到实际定义的持续时间在哪里。 最佳答案 已回复here.就像你提到的Toast.LENGTH_SHORT和Toast.LENGTH_LONG不是以毫秒为单位,而是0或1。实际持续时间为:privatest