这个link表示条件表达式中的第二个和第三个操作数必须是兼容的类型。它还表示第二个和第三个指针操作数之一可能是 NULL。那么这是否意味着未计算的指针将变为 NULL?
示例:a == a?指针1:指针2;
听到 a == a
为 true,因此 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
。
关于c - 条件表达式中未计算的指针是否会变为 void?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45648502/