Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 重新解释C+中的铸造+; uint32\u t r,g,b; r=(uint32_t)145; g=(uint32_t)131; b=(uint32_t)139; uint32_t rgb=((uint32_t)r16)和0x0000ff; uint8_t gnew=(rgbnew>>8)和0x0000ff; uint8_t bnew=(rgbnew)和0x0000ff;_C++_Pointers_Pointer Conversion - Fatal编程技术网

C++ 重新解释C+中的铸造+; uint32\u t r,g,b; r=(uint32_t)145; g=(uint32_t)131; b=(uint32_t)139; uint32_t rgb=((uint32_t)r16)和0x0000ff; uint8_t gnew=(rgbnew>>8)和0x0000ff; uint8_t bnew=(rgbnew)和0x0000ff;

C++ 重新解释C+中的铸造+; uint32\u t r,g,b; r=(uint32_t)145; g=(uint32_t)131; b=(uint32_t)139; uint32_t rgb=((uint32_t)r16)和0x0000ff; uint8_t gnew=(rgbnew>>8)和0x0000ff; uint8_t bnew=(rgbnew)和0x0000ff;,c++,pointers,pointer-conversion,C++,Pointers,Pointer Conversion,当我试图运行这段代码时,第行出现了分段错误 uint32_t rgb=((uint32_t)r请尝试编译包含所有警告和调试信息的代码(例如,在Linux上使用g++-Wall-g),并对其进行改进,直到没有警告。学习使用调试器(例如,在Linux上使用gdb) 我想这可能是因为 uint32_t r,g,b; r = (uint32_t)145; g = (uint32_t)131; b = (uint32_t)139; uint32_t rgb = ((uint32_t)r <

当我试图运行这段代码时,第行出现了分段错误


uint32_t rgb=((uint32_t)r请尝试编译包含所有警告和调试信息的代码(例如,在Linux上使用
g++-Wall-g
),并对其进行改进,直到没有警告。学习使用调试器(例如,在Linux上使用
gdb

我想这可能是因为

 uint32_t r,g,b;
 r = (uint32_t)145;
 g = (uint32_t)131;
 b = (uint32_t)139;
 uint32_t rgb = ((uint32_t)r << 16 | (uint32_t)g << 8 | (uint32_t)b);
 float rgbf = *reinterpret_cast<float*>(&rgb);

 uint32_t rgbnew = *(reinterpret_cast<uint32_t *>(&rgbf));
 uint8_t rnew = (rgbnew >> 16) & 0x0000ff;
 uint8_t gnew = (rgbnew >> 8) & 0x0000ff;
 uint8_t bnew = (rgbnew) & 0x0000ff;
当我有

   g++-4.7 -std=c++11 -Wall -g ramji.cc -o ramji
#包括
#包括
int main(int argc,字符**argv)
{
uint32_t r,g,b;
r=(uint32_t)145;
g=(uint32_t)131;
b=(uint32_t)139;

std::请告诉您使用的编译器(和版本)以及目标系统。同时给出编译标志。您是否尝试隔离此代码段并查看发生了什么?我将这段代码放在一个简单的主函数中,没有segfault。我猜在
uint32_t rgb=((uint32_t)中显式转换为
uint32
)R
   g++-4.7 -std=c++11 -Wall -g ramji.cc -o ramji
 #include <cstdint>
 #include <iostream>

 int main(int argc, char**argv)
 {
   uint32_t r,g,b;
   r = (uint32_t)145;
   g = (uint32_t)131;
   b = (uint32_t)139;
   std::cout << "r=" << r << " g=" << g << " b=" << b << std::endl;
   uint32_t rgb = ((uint32_t)r << 16 | (uint32_t)g << 8 | (uint32_t)b);
   std::cout << "rgb=" << rgb << std::endl;
   float rgbf = *reinterpret_cast<float*>(&rgb);
   std::cout << "rgbf=" << rgbf << std::endl;
   uint32_t rgbnew = *(reinterpret_cast<uint32_t *>(&rgbf));
   std::cout << "rgbnew=" << rgb << std::endl;
   uint8_t rnew = (rgbnew >> 16) & 0x0000ff;
   uint8_t gnew = (rgbnew >> 8) & 0x0000ff;
   uint8_t bnew = (rgbnew) & 0x0000ff;
   std::cout << "rnew=" << rnew << " gnew=" << gnew 
        << " bnew=" << bnew << std::endl;
   return 0;
 }