c ++和运算符优先级

时间:2013-07-31 12:09:28

标签: c++ pointers operator-keyword operator-precedence

我知道这个长字符串可以更容易阅读,但我不希望这样!

我想获得像素的颜色而我正在使用SDL。虽然这与问题不太相关......

http://www.gamedev.net/topic/502040-sdl-get-pixel-color/

http://www.libsdl.org/docs/html/sdlsurface.html

显示要获取此颜色值,请执行以下操作:

 Uint32 *pixels = (Uint32 *)surface->pixels;
  return pixels[ number ];

嗯,我没有那样,我也想尝试掌握整个运算符的优先级。

我已经尝试了一下但我无法使用last []运算符。

所以...我明白了:

vector<Class*>* pointer_To_A_Vector_With_Pointers;

Class.h: 
vector<Class2*>* get_Another_Vector(); 

Class2.h
SDL_Surface* sdlSurface; 

SDL_Surface.h
has the pixels-array 




Uint32 value =  *(Uint32*) (* pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector()  )[i2]->sdlSurface->pixels;

它应该相当于这样说:

   Uint32 *pixels = (Uint32 *)surface->pixels;

它可以工作但只检索像素数组的第一种颜色。但我想实现这个目标(最后一行的[数字]):

Uint32 value =  *(Uint32*) (* pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector()  )[i2]->sdlSurface->pixels[ number ];

换句话说,我希望包含最后一个运算符[],sdlSurface->pixels[numbers]

1 个答案:

答案 0 :(得分:3)

[]的优先级高于*,因此:

 *pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector() 

应该是:

 (*pointer_To_A_Vector_With__Pointers)[i]->get_Another_Vector() 

如您的变量名所示。