有什么用途:
static_castdynamic_castconst_castreinterpret_cast(type)valuetype(value)如何决定在哪些特定情况下使用哪个?
我听说该static_cast函数应该优先于C风格或简单的函数式转换.这是真的?为什么?
有什么理由喜欢static_cast<>超过C风格的演员吗?它们是等价的吗?他们有什么速度差异吗?
我通常会尽量避免使用类型,因为我的印象是它的编码习惯很差并且可能会导致性能下降.
但如果有人让我解释为什么会这样,我可能会把它们看成是车头灯中的鹿.
那么为什么/什么时候铸造不好?
它是一般的java,c#,c ++还是每个不同的运行时环境都按照它自己的条件处理它?
任何语言的细节都是受欢迎的,例如为什么它在c ++中不好?
我很清楚使用static_cast而不是C样式转换为指针类型的优势.
如果指针类型不兼容,则:
static_cast 将在源代码中的特定行产生编译时错误但我无法找到非指针类型的任何类似示例.
换句话说,两种转换方法对非指针类型产生相同的结果.
这是正确的,还是我错过了什么?
如果是,仅static_cast用于非指针类型以保持编码一致性?
我有一个变量声明为:
enum class FooEnum: uint64_t {}
Run Code Online (Sandbox Code Playgroud)
我想转换为它的基类型,但我不想硬编码基类型.例如,像这样:
FooEnum myEnum;
uint64_t * intPointer = (underlying_typeof(myEnum))&myEnum;
Run Code Online (Sandbox Code Playgroud)
这可能吗?
为什么m总是= 0?someClass的x和y成员是整数.
float getSlope(someClass a, someClass b)
{
float m = (a.y - b.y) / (a.x - b.x);
cout << " m = " << m << "\n";
return m;
}
Run Code Online (Sandbox Code Playgroud) 我做了一个简单的程序,允许用户选择一些骰子然后猜测结果...我之前发布了这个代码,但是错误的问题所以它被删除了...现在我不能有任何错误甚至警告代码,但由于某种原因,这个警告保持弹出,我不知道如何解决它... "警告C4244:'参数':从'time_t'转换为'unsigned int',可能丢失数据"
#include <iostream>
#include <string>
#include <cstdlib>
#include <time.h>
using namespace std;
int choice, dice, random;
int main(){
string decision;
srand ( time(NULL) );
while(decision != "no" || decision != "No")
{
std::cout << "how many dice would you like to use? ";
std::cin >> dice;
std::cout << "guess what number was thrown: ";
std::cin >> choice;
for(int i=0; i<dice;i++){
random = rand() % 6 + 1;
}
if( choice == random){
std::cout << "Congratulations, you got it …Run Code Online (Sandbox Code Playgroud) c++ ×10
casting ×7
c# ×1
c++-faq ×1
c++11 ×1
compile-time ×1
dynamic-cast ×1
java ×1
pointers ×1
rtti ×1
static-cast ×1