C++ 和运算符优先级

问题描述 投票:0回答:1

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

我想获取像素的颜色,并且我正在使用 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 ];

嗯,我没有这样的东西,我也想尝试并掌握整个运算符优先级的东西..

我尝试了一些,但无法让它与最后一个 [] 运算符一起工作。

所以...我明白了:

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]

c++ pointers operator-keyword operator-precedence
1个回答
3
投票

[]
的优先级高于
*
,所以:

 *pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector() 

应该是:

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

正如你的变量名称所示。

© www.soinside.com 2019 - 2024. All rights reserved.