【发布时间】:2018-08-25 14:36:43
【问题描述】:
我在使用三元条件运算符时遇到了一个问题。
如果发生:
int x = 5;
void * pointer = &x;
printf("x: %d \n", 1 == 1 ? (*((int*)pointer)) : (*((char*)pointer)));
它向控制台写入数字 5,这是正确的活动。但是当我将最后一行 char 更改为 double 时:
printf("x: %d \n", 1 == 1 ? (*((int*)pointer)) : (*((double*)pointer)));
然后它写0,我不知道为什么。我知道我可以使用 if-else 来代替它,但我只是好奇它为什么会这样工作。谁能帮帮我?
【问题讨论】:
-
尝试确定整个三元表达式的类型(它只有一种类型)
-
如果您启用(或阅读)警告,您的编译器可以帮助您。
-
这与您在三元中使用指针这一事实无关,因此您的问题标题完全是误导。
1 ? 5 : 5.0会出现同样的问题。
标签: c ternary-operator void-pointers