比较
C中三目运算符返回的是变量的值,三目运算符不能作为左值使用
C++中三目运算符返回的是变量的引用,所以既可以作为左值也可以作为右值使用
#include <stdio.h>
int main()
{
int a = 1;
int b = 2;
a>b?a:b = 10;//直接给表达式的返回值赋值
printf("%d\n",a);
printf("%d\n",b);
getchar();
return 0;
}
警告:当三目运算符有可能返回常量时,返回的是值,也就是如下a>b?1:b = 1;表达式编译不过
C中三目运算符如何返回变量
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
*(a>b?&a:&b) = 10;
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
让表达式返回指针,然后通过指针修改