条件表达式中未评估的指针是否变为无效?

Does the unevaluated pointer in a conditional expression, turns void?

这个link说条件表达式中的第二个和第三个操作数必须是兼容的类型。它还表示第二个和第三个指针操作数之一可能是 NULL。那么这是否意味着未评估的指针变为 NULL

示例:a == a? pointer1 : pointer2;

听说 a == a 为真,因此 pointer1 得到评估,pointer2 未评估。所以,是 pointer2 变成 NULL.

So does that mean the unevaluated pointer turns NULL?

不,它解释了第二个和第三个操作数可以具有不同类型的异常。其中之一可以是 NULL.

int * pointer = (1 == 1) ? NULL : &intvar;

int * pointer = (1 == 1) ? &intvar : NULL;

因为其中之一是 int*,第二个是 void*


你认为在这种情况下

int * pointer = (1 == 1) ? &intvar1 : &intvar2;

可变intvar2NULL,但事实并非如此。唯一被修改的变量是 pointer 并且指向变量 intvar1.