条件表达式中未评估的指针是否变为无效?
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;
可变intvar2
转NULL
,但事实并非如此。唯一被修改的变量是 pointer
并且指向变量 intvar1
.
这个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;
可变intvar2
转NULL
,但事实并非如此。唯一被修改的变量是 pointer
并且指向变量 intvar1
.