草庐IT

c++ - Double 到 int 的转换在幕后?

我只是想知道将double转换为int的幕后发生了什么,比如int(5666.1)?这会比子类对父类的static_cast更昂贵吗?由于int和double的表示形式根本不同,因此在此过程中会创建临时变量,而且成本也很高。 最佳答案 任何具有native浮点的CPU都有将float转换为整数数据的指令。该操作可能需要几个周期到多个周期。通常对于FP和整数有单独的CPU寄存器,因此您还必须随后将整数移动到整数寄存器才能使用它。这可能是另一种操作,可能很昂贵。请参阅您的处理器手册。PowerPC尤其不包括将FP寄存器中的整数移动到整数

c++ - 为什么 C++ 不会打印 char 的内存地址,但会打印 int 或 bool?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyisaddressofchardatanotdisplayed?这是代码和输出:intmain(intargc,char**argv){boola;boolb;cout输出:a:0x28ac67的地址b的地址:0x28ac66c:0x28ac60的地址d:0x28ac5c的地址e的地址:我的问题是:char的内存地址在哪里?为什么不打印?谢谢。 最佳答案 C/C++中的字符串可以用char*表示,与&e的类型相同。所以编译器认为你正在尝试打印一个字符串

c++ - 为什么 C++ 不会打印 char 的内存地址,但会打印 int 或 bool?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whyisaddressofchardatanotdisplayed?这是代码和输出:intmain(intargc,char**argv){boola;boolb;cout输出:a:0x28ac67的地址b的地址:0x28ac66c:0x28ac60的地址d:0x28ac5c的地址e的地址:我的问题是:char的内存地址在哪里?为什么不打印?谢谢。 最佳答案 C/C++中的字符串可以用char*表示,与&e的类型相同。所以编译器认为你正在尝试打印一个字符串

java - 如何从 char 中减去字符 '0' 将其更改为 int?

此方法适用于C、C++和Java。我想知道它背后的科学原理。 最佳答案 char的值可以是0-255,其中不同的字符映射到这些值之一。数字也按'0'到'9'的顺序存储,但它们通常也不作为前十个char存储值(value)观。也就是说,字符'0'没有0的ASCII值。0的char值几乎总是\0空字符。在不了解ASCII的情况下,从任何其他数字字符中减去'0'字符将导致原始字符的char值非常简单。所以,这是简单的数学:'0'-'0'=0//Charvalueofcharacter0minuscharvalueofcharacter0/

java - 如何从 char 中减去字符 '0' 将其更改为 int?

此方法适用于C、C++和Java。我想知道它背后的科学原理。 最佳答案 char的值可以是0-255,其中不同的字符映射到这些值之一。数字也按'0'到'9'的顺序存储,但它们通常也不作为前十个char存储值(value)观。也就是说,字符'0'没有0的ASCII值。0的char值几乎总是\0空字符。在不了解ASCII的情况下,从任何其他数字字符中减去'0'字符将导致原始字符的char值非常简单。所以,这是简单的数学:'0'-'0'=0//Charvalueofcharacter0minuscharvalueofcharacter0/

c++ - int2、int3、float2、float3 等类型呢?

我已经看到使用这些类型的不同代码片段,但我还没有看到它们是在某些中定义的,还是只是在“本地头文件”中定义的,甚至是在文件级别。所以我想知道的是:有没有定义这些类型的标准头文件?或者是否有一些每个人都使用的标准定义我应该复制?我猜这些类型的一个可能和常见的用途是表示坐标,我错了吗?如果我想用这些来表示网格中的位置,我还有什么需要考虑的吗?有什么理由为什么或为什么不使用它们?编辑:澄清:int2表示一对整数,float3表示三个float。如果这些类型是在某个地方预定义的,那么使用它们会很好,而不必从头开始编写它,包括标准代数函数(operator+、operator-等)。

c++ - int2、int3、float2、float3 等类型呢?

我已经看到使用这些类型的不同代码片段,但我还没有看到它们是在某些中定义的,还是只是在“本地头文件”中定义的,甚至是在文件级别。所以我想知道的是:有没有定义这些类型的标准头文件?或者是否有一些每个人都使用的标准定义我应该复制?我猜这些类型的一个可能和常见的用途是表示坐标,我错了吗?如果我想用这些来表示网格中的位置,我还有什么需要考虑的吗?有什么理由为什么或为什么不使用它们?编辑:澄清:int2表示一对整数,float3表示三个float。如果这些类型是在某个地方预定义的,那么使用它们会很好,而不必从头开始编写它,包括标准代数函数(operator+、operator-等)。

c++ - 为什么我们不能在内存限制内声明一个任意大小的数组,比如 int 数据类型?

intA[10000000];//Thisgivesasegmentationfaultint*A=(int*)malloc(10000000*sizeof(int));//goeswithoutanysetfault.现在我的问题是,出于好奇,如果最终我们能够为我们的数据结构分配更高的空间,例如,使用C中的指针方法创建的BST和链表没有这样的内存限制(除非总大小超过我们机器的RAM大小),例如,在上面声明指针类型的第二个语句中,为什么我们不能声明更大大小的数组(直到它达到内存限制!!)...这是因为分配的空间在静态大小的数组中是连续的吗?但是我们从哪里得到保证,在RAM中的下一个10

c++ - 为什么我们不能在内存限制内声明一个任意大小的数组,比如 int 数据类型?

intA[10000000];//Thisgivesasegmentationfaultint*A=(int*)malloc(10000000*sizeof(int));//goeswithoutanysetfault.现在我的问题是,出于好奇,如果最终我们能够为我们的数据结构分配更高的空间,例如,使用C中的指针方法创建的BST和链表没有这样的内存限制(除非总大小超过我们机器的RAM大小),例如,在上面声明指针类型的第二个语句中,为什么我们不能声明更大大小的数组(直到它达到内存限制!!)...这是因为分配的空间在静态大小的数组中是连续的吗?但是我们从哪里得到保证,在RAM中的下一个10

c++ - 检测是否将 int 转换为枚举会导致非枚举值

假设我有这样的事情:enumCardColor{HEARTS,DIAMONDS,CLUBS,SPADES};CardColorMyColor=static_cast(100);是否有一种(简单的)方法可以在编译时或运行时检测MyColor的值不对应于任何枚举值?更一般地说,如果枚举值不相互跟随,例如:enumCardColor{HEARTS=0,DIAMONDS,CLUBS=4,SPADES}; 最佳答案 CashCow礼物adecentanswer对于这个问题:编写自定义函数来执行检查转换当然很简单。不幸的是,这也是很多工作,您必